Go | Reference types (pointers)
·
Go
포인터는 메모리에서 특정 위치를 가리키는것이다. func main() { x := 10 // x(10이저장)돼있는 메모리의 주소를 myFirstPointer에 저장 // &x: x의 레퍼런스 myFirstPointer := &x // *: 메모리에서 myFirstPointer가 가리키는주소에 가서 그 내용을 15로바꿔라 *myFirstPointer = 15 // x: 15 } func changeValueOfPointer(num *int) { *num =25 } 포인터 왜쓰냐: 값을 패스하고 리턴하지 않고도, 변수를 포함하지 않는 스코프에서도 변수의 값을 변경할 수 있다. 직접접근가능 func main() { x := 10 myFirstPointer := &x *myFirstPointer = 15 //..
Go | Aggregate types (arrays, struct)
·
Go
👉 배열 go에서 배열은 다른 언어에서만큼 많이 쓰이지 않는다. Go에는 slice가 있기 때문. (배열비슷한데 추가적인 기능이 있음) //선언: [길이]타입 var myStrings [3]string //할당 myStrings[0] = "cat" myStrings[1] = "dog" myStrings[2] = "fish" 👉 struct type Car struct { NumberOfTires int Luxury bool BucketSeats bool Make string Model string Year int } func main() { // var myCar Car // myCar.NumberOfTires = 4 // myCar.Luxury = false // ... // ---> myCar := ..
Go | 기본타입 (numbers, strings, booleans)
·
Go
👉 number int int uint: 0과 양수 int16: 16비트 인티저 int32: 32비트... int64: 64... 왜 int(숫자)타입들이 있음? 프로그램이 폰 옛날컴 현재컴 등 어떤 아키텍쳐에서 컴파일될지 모르기 때문에 다양한 종류가 있다. 절대로 확실하게 64비트 아키텍처용 만든다면 int64쓰는게 조오금 낫다. 하지만 그냥 int를 쓰는게 좋다. float float32: 32비트 float64: 64비트 그냥 float는 없다. 사이즈에 따라서 골라서 쓰기 👉 string 스트링은 go에서 이뮤터블 변경 불가능하다. myString := "홍길동" myString = "김말동" 값을 바꾸는게 아니라 새로운 스트링을 생성해서 변수에 할당하는것 그래서 엄청큰 나노세컨드 단위가 중요한 ..
반응형