language

Go 의 struct 를 공부할 겸 간단한 bank account 를 생성하는 예제를 만들어 본다. 우선 accounts 폴더를 만들고 그 아래 accounts.go 파일을 만든다. accounts.go 는 실행의 주체로 사용하지 않을 것이기 때문에 main function 을 만들지 않는다. 사용 할 struct 를 정의하는데, 이름과 잔액 정보를 가지고 있도록 다음과 같이 만든다. package accounts type Account struct { Owner string Balance int } 이 파일에서 주목할 점은 struct 인 Account 와 그 안에 선언한 Owner, Balanace 가 영문자 대문자로 시작한다는 점이다. 이렇게 작성하면 struct 를 export 하겠다는 의미이고,..
Struct 는 Object 와 유사 하면서 map 보다 조금 더 유연하다. C에서 봤던 구조체와 비슷한 느낌을 가지고 있는것 같다. package main import "fmt" // Go 의 struct 에는 constructor (생성자) 가 없다. // 우리가 constructor 를 직접 실행해 줘야 한다. -> 생성자가 없다고 했는데 실행해줘야 한다는 말을 이해하지 못함. type person struct { name string age int favFood []string } func main() { myFood := []string{"kimchi", "ramen"} // struct 사용 방법 1, 순서대로 타입에 맞게 값을 입력 (권장하지 않음) nimkoes_ver1 := person{..
기본적으로 map 은 key 와 value 로 이루어져 있다. 다음은 map 을 사용하는 단순한 예제이다. package main import "fmt" func main() { sample_map := map[string]string{"key": "value", "name": "nimkoes"} sample_map["add_key"] = "add_value" // 새로운 값을 추가 sample_map["key"] = "modify_value" // 기존의 값을 수정 (덮어쓰기) // range 를 사용 한 반복 for key, value := range sample_map { fmt.Println(key, value) } fmt.Println() // value 만 사용하고 싶을 때 for _, v :..
Go 에는 일반적으로 생각하는 배열을 표현하는 두 가지 방법이 있다. 하나는 다른 언어에서 보던 것과 같은 배열이고, 다른 하나는 슬라이스(slice) 라고 하는게 있다. 기본적인 선언 방법은 다음과 같다. package main import "fmt" func main() { // array 사용 방법 1 example_array_ver1 := [5]string{"arr_nimkoes", "arr_go", "arr_java"} // array 사용 방법 2 example_array_ver2 := [...]string{"kim", "lee", "park", "choi"} // slice 사용 방법 example_slice := []string{"nimkoes", "go", "java"} example_s..
아주 오래전이지만 C 언어를 공부한 적이 있었다. Go 언어를 배워보기로 하기를 잘한것 같다. 처음 프로그래밍 언어를 배울 때 이런 얘기를 들었다. Java 는 Class 에서 (상속 등과 관련된), C 는 포인터에서 많이 포기를 한다고,, 그래서 포인터에 겁을 먹은적이 있었는데, 깊고 복잡한 내용이 아니면 포기할 정도는 아니라고 생각 했다. 아무튼, 포인터 관련된 연산자는 크게 두가지가 있다. 하나는 & 다른 하나는 * & 는 그 변수의 주소값을 확인할 때 사용하고, * 는 주소가 가리키는 값을 확인할 때 사용한다. 여기서 주소라고 하는 것은 메모리의 주소를 뜻한다. 다음 코드를 보자. package main import "fmt" func main() { a := 2 b := &a fmt.Printl..
Go 에서의 switch 는 다른 언어와 비슷하다. else if 가 너무 많이 사용되는 등의 경우 사용하면 좋은 문법이다. package main import "fmt" func canIDrink(age int) bool { switch { case age 50: return false } return false } func canIDrinkVer2(age int) bool { switch koreanAge := age + 2; koreanAge { case 10: return false case 18: return true } return false } func main() { fmt.Println..
Go 에서 if 문은 다음과 같이 작성할 수 있다. package main import "fmt" func canIDrink(age int) bool { if age < 18 { return false } return true } func main() { fmt.Println(canIDrink(16)) } 소괄호 없이 그냥 조건을 쓴다는 부분을 빼고는 다른 언어들과 별로 다를게 없어 보인다. 하지만 Go 의 if 는 재밌는 문법이 하나 더 있다. if 블럭 안에 변수를 선언해서 사용할 수 있다. func canIDrinkVer2(age int) bool { if koreanAge := age + 2; koreanAge < 18 { return false } return true } 이렇게 쓰면 뭐가 좋을..
Go 에서 반복문은 오직 for 를 사용해서만 가능하다. 어떻게 보면 다양한 형태의 for 문을 사용 했었는데 하나로 통일 된게 더 좋을수도 있겠다. 개수가 정해지지 않은 여러개의 정수를 전달받아 합을 반환하는 함수를 만들어 보자. package main import "fmt" func superAdd(numbers ...int) int { fmt.Println("without index") for number := range numbers { fmt.Print(number) } fmt.Println() fmt.Println() fmt.Println("with index") for index, number := range numbers { fmt.Println(index, number) } fmt.Pri..
nimkoes
'language' 태그의 글 목록 (3 Page)