함수
함수는 함수정의 키워드, 함수명, 매개변수, 반환타입의 4가지로 이루어진다
func Attach(data string) string {
<본문>
return result
}
위의 첫째줄을 순서대로 해석하면 아래와 같다.
func : 함수임을 나타낸다
Attach : 함수명
data : 매개변수명
string : 매개변수 타입
string : 반환 타입
리턴은 두가지를 다중 반환 하도록 다중 반환함수를 만들수도 있다.
func Attach(data string) (string, int)
위와 같은 경우에는 아래처럼 사용하면 된다.
ret, index := Attach(data)
분기문
if 문
if 조건문 { 코드
}else if 조건문 { 코드
} else { 코드
}
예제
if data == "hello" {
fmt.Println("hello")
} else if data == "bye" {
fmt.Println("bye")
} else {
fmt.Println("Good bye")
}
if의 조건문은 && , ||을 이용하여 구성하여 사용한다.
여러개의 조건문을 활용할 경우 괄호를 이용하여 묵어야 한다.
if문에 초기문과 조건문을 같이 넣기
if rets := tf(true); rets {
if rets := tf(true); rets == true {
위의 문장은 tf 함수에 매개변수로 true를 넣고 함수를 실행한 이후 결과가 true일 때에 if문을 참으로 인식하고 동작하는 초기분을 넣었다. 초기문은 ";" 를 이용하여 넣고 뒷 부분에 매개변수를 통한 조건문이나 조건문을 넣을수 있다.
switch문
switch문은 값에 따라서 수행해야 하는 경우가 틀릴 경우 사용함
switch data {
case "hello":
fmt.Println("hello")
case "bye":
fmt.Println("bye")
default:
fmt.Println("Good Bye")
}
다양한 사용법이 존재함
다중 조건 case 사용
case "hello", "bye":
조건문을 이용한 case 문을 사용
case degree > 5:
초기값을 이용하여 함수를 호출한 이후 사용
switch rets := tf(false); rets {
case true:
fmt.Println("hello")
for문
for문은 조건을 가진 반복 작업에 사용
for 초기화; 조건문; 증가자 {
<코드>
}
예제
for a := 0; a < 10; a++ {
fmt.Print(a)
}
continue와 break를 이용하여 구성 가능함
데이터 다루기
배열
배열은 같은 데이터 타입으로 이루어진 값들의 묶음
선언
var 변수명 [사이즈]타입
var data [100]string
초기화 및 데이터 입력
var data3 [5]string = [5]string{"haha", "hihi", "huhu"}
초기화 하면서 같은 사이즈의 배열을 할당
data3[3] = "hoho"
비어있는 3번에 데이터 입력
출력 방식
for i, a := range data3 {
fmt.Println(i, a)
}
range를 이용하여 들어간 배열 만큼 동작 하다록 함
자바나 타 언어와 동일하게 다중 배열 사용 가능함
구조체
구조체는 C에서 자주 사용하던 것과 거의 유사하게 사용할 수 있게 된 데이터들의 집합이다.
선언
type <구조체명> struct {
필드명 데이터타입
필드명 데이터타입
}
위와 같이 선언하여 사용 할수 있다.
그럼 실제로 구조체를 선언하여 사용해 보자
type Member struct {
UserID string
UserNo int
Name string
Address string
}
func main() {
var member Member
member.Address = "부산시...."
fmt.Println(member.Address)
}
만약 구조체 배열 즉 slice를 만든 다음에 해당 구조체에 값을 추가 하고자 할 경우에는 아래와 같다.
var member2 []Member
member := Member{"guest", 1213, "김수로", "경기도"}
member2 = append(member2, member)
위에서 정의한 Member가 할당된 member에 값을 할당한 다음 이를 member2 슬라이스에 append 하면 되는 구 조이다.
실제로 자바와 유사함
참고자료
GO 언어의 표준 패키지 검색
https://golang.org/pkg
https://github.com/avelino/awesome-go
go.modGo 1.11부터 go 명령은 디렉토리가 외부 에 있는 경우 현재 디렉토리 또는 상위 디렉토리에 a가 있는 경우 모듈을 사용할 수 있도록 합니다