반응형
관심 있었던 컨테이너 기술들이 go라는 언어로 이루어져있고 devops 쪽을 공부하다보니까 관련 기술들이 go로 이루어지는것들이 좀 있어서 go라는 언어에 대해 평소 배우고 싶기도 했고 그래서 golang을 시작!!
일단 언어에 대한 기본적인 지식을 쌓기 위해서 해당 사이트들 참고를 했어요
go build를 하면 exe 실행파일로 만들어주고 go run하면 실행!! 예전에 수업에서 듣기론 go가 다른 python이나 js와 다르게 pip npm으로 패키지를 설치하는걸 go라는 커맨드로 다 할 수 있다고 했던 것 같아요,,
go를 실습해보기 위해선 goland를 이용했고(학생은 jetbrain 무료라서 이용했어여 ㅎ)
기본적으로 변수 선언과 데이터 타입에 대해 공부를 시작했어요
package main
import "fmt"
func main() {
k := 10
var k int = 10 // 위와 같은 표현
var k int // 만 하면 0
}
go가 신기한게 변수형을 뒤에다 쓰는게.. 신기하더라구요
기본적으로 타입도 아래처럼 존재해요!
- 부울린 타입 bool
- 문자열 타입 string
- 정수형 타입 int int8 int16 int32 int64uint uint8 uint16 uint32 uint64 uintptr
- Float 및 복소수 타입float32 float64 complex64 complex128
- 기타 타입 => byte: uint8과 동일하며 바이트 코드에 사용 / rune: int32과 동일하며 유니코드 코드포인트에 사용한다
그리고 go는 조건식에도 다른 언어의 for문처럼 문장식으로 사용할 수 있어요!
package main
import "fmt"
func main() {
k := 10
if k == 1 {
fmt.Println("k1")
} else if k == 10 {
fmt.Println(k)
}
i := 1
max := 3
// if 문에서 조건식을 사용하기 이전에 간단한 문장을 함께 실행 가능 val 은 if 문 블럭 안에서만 사용 가능
if val := i * 2; val < max {
fmt.Println(val)
}
}
go에서는 여러개의 string 가변파라미터 ...을 사용해서 받을 수도 있어요
그리고 아래에서 특이하게 for 루프를 구성할 수 있는데 msg라는 컬렉션에서 이제 idx와 해당 값 x를 하나씩 뽑아오는 그런 형태입니다
func variadicFunc(msg ...string) {
for idx, x := range msg {
fmt.Println(idx, x)
}
}
그리고 c++ 처럼 pass by ref로 주소를 넘겨 포인터로 받아서 참조를 할 수 있더라구여!
package main
import "fmt"
func main() {
msg := "test"
passByRef(&msg)
}
func passByRef(msg *string) {
fmt.Println(msg)
*msg = "change"
}
여기까지 go를 공부해봤는데 생각보다 문법도 신기하고 공부하는 재미가 있어서 꾸준히 올릴 것 같아여🙂
위에 있는 것 외에 레퍼런스 참고할 만한게 더 있으면 업데이트 하겠슴다 !!
반응형
'Back-end > Go' 카테고리의 다른 글
Go Fiber 간단한 예제 (0) | 2023.06.13 |
---|