자료 저장소

참고 사이트 : http://go-tour-kr.appspot.com/

A Tour of Go 사이트에서 실습한 내용을 요약한 글 입니다.


# 화면 출력
fmt.Println()
fmt.Println("Happy", math.Pi, "Day")
fmt.Printf("Now you have %g problems.",math.Nextafter(2, 3))

참고 : https://golang.org/pkg/fmt/

# 자료형
bool
string
int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr
byte // uint8의 다른 이름(alias)
rune // int32의 다른 이름(alias), 유니코드 코드 포인트 값을 표현합니다.
float32 float64
complex64 complex128

# 함수 선언
func add(x int, y int) int { }
func add(x, y int) int { }
func swap(x, y string) (string, string) { }
func split(sum int) (x, y int) { } // 반환 변수 이름을 미리 정함

# 변수 선언
var x, y, z int
var c, python, java bool
var x, y, z int = 1, 2, 3
c, python, java := true, false, "no!" // ':=' 함수 안에서만 사용 가능
 
# 변수 초기화
var x, y, z int = 1, 2, 3
var c, python, java = true, false, "no!"

# 상수 선언
const Pi = 3.14
const World = "안녕"
const Truth = true

# 반복문 (for 밖에 없음)
for i := 0; i < 10; i++ { }
for sum < 1000 { }
for { } // 무한 루프

# 조건문
if x < 0 { }
if v := math.Pow(x, n); v < lim { } // 결과 v는 else에서도 사용 가능

# 구조체
type Vertex struct { X int;  Y int }
v := Vertex{1, 2}
v.X = 4
 
# 구조체 리터럴
원하는 필드를 `{Name: value}` 구문을 통해 할당
r = Vertex{X: 1}  // Y:0 is implicit

# 포인터
포인터 연산 제공 안함
p := Vertex{1, 2}
q := &p
 
# new
new(T) 는 모든 필드가 0(zero value) 이 할당된 T 타입의 포인터를 반환
(zero value 는 숫자 타입에서는 0, 참조 타입에서는 nil)
v := new(Vertex)

# 슬라이스 (Slices) // 배열
p := []int{2, 3, 5, 7, 11, 13}
p[1:4] // 3, 5, 7
p[:3] // 2, 3, 5
p[4:] // 11, 13

for i := 0; i < len(p); i++ { }

# 슬라이스 만들기
a := make([]int, 5)
b := make([]int, 0, 5) // 세번째 매개변수로 capacity 제한
var z []int // 빈 슬라이스, 최대 크기 0

참고 : http://golang.org/doc/articles/slices_usage_and_internals.html

# 레인지 // itrerator 개념
for 반복문에서 range 를 사용하면 슬라이스나 맵을 순회(iterates)

var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
for i, v := range pow { } // v = 1, 2, 3... 128

 

 

'프로그래밍 > GO' 카테고리의 다른 글

GO :: LiteIDE 개발 환경 만들기  (0) 2015.08.27
댓글 로드 중…

최근에 게시된 글