본문 바로가기
카테고리 없음

go language 튜토리얼

by Knowledge Store In Hyunsoft 2018. 8. 25.

변수 정의

var 변수명 자료형

var a int =1

var b string = ""


다중 변수 처리

var {

 a int = 1

 b string ="hello"

}


사용하지 않는 변수 및 사용하지 않는 package는 _ 사용

ex)  a:= 1

     b:= 2

     _ = b





go는 컴파일 언어


go는 가비지 컬렉션을 제공한다.



go 루틴 지원

- 채널을 통해 데이터를 공유하고 실행순서를 제어함.


go언어 특징

- 메모리 관리가 다소 느슨해도 되고 규모가 크고 복잡하며 유지 보수가 빈번한 곳에사용

- 다양한 네트워크 라이브러리를 제공하므로 인터넷 프로그래밍에 유리.



%GOROOT% : 

%GOPATH%

- 사용자 계정의 GO 위치

- 기존 PATH에 ;%GOPATH%\bin 을 추가해서 사용



통합개발환경

- liteIde

- Atom

- eclipse

- go Land

- IntelliJ IDEA Community Edition ( plugin 설치) : 설치 잘 안됨.



특징 :

- 문장 끝에 ; 를 사용하지 않음.

- 시작 파일은 package main , func main을 지정해야함.

-  


컴파일 방법

- go build 파일명.go



코드 정렬

gofmt -w 파일명.go


룬(rune)

- 유니코드(utf-8) 문자를 저장할때 사용 '' 사용 "" 사용시 오류 발생

var r1 rune ='한'

var r2 rune ='\ud55c' // 한



숫자 연산에서 자료형이 다른 경우 컴페일 에러 발생하므로 명시적 자료형 변환 필요

var num1  int = 3

var num2 float32 =3.2

fmt.Println(float32(num1)+ num2)



자료형 오버플로우 언더플로우


한글 len 으로 확인시 x3해야 함.

'한글'을 두글자를 리턴하기 위해서는 utf8.runeCountInString 함수 사용


상수선언 : 선언과 동시에 초기화, 값 변경 못함.

const age int = 1

상수열거형

const (

sunday =0

monday =1

)


iota : 순서대로 값을 입력할때 사용

const (

sunday = iota

monday 

)


전역 패키지 정의

import . "fmt"

func main(){

  Println("hello")

}


별칭 사용

import f "fmt"


조건문에는 () 를 사용하지 않는다.


반복문

for만 있음.

for 초기값;조건식;변화식{

}


레이블 사용가능


goto : 정해진 레이블로 직접이동


분기문 

switch

fallthrough : 특정 case문을 실행한 후 다음 case문을 실행할 경우 사용


여러조건 case 2,3,4:

조건식 사용 case a>0:




배열 사용

var a[5] int


배열을 여러 줄로 나열할때 마지막에도 ,를 넣어야 함.

b:=[5]int{

1,

2,

3,

4,

5,

}


배열 range 사용

for 인덱스,값=range 배열{}

ex) for i,value=range a{

    }

인덱스 생략시

for _,value=range a{

    }


슬라이스 - 공부 더 필요함.

var a [] int  //[]안에 길이 지정하지 않음.레퍼런스타입.

공간할당은 make 함수를 통해서 사용

var a [] int = make([] int,5)

슬라이스 복사

copy 사용 copy(b,a)


맵사용

key-value

var a map[string] int // 키는 string , 값은 value

make로 초기화 

var a map[string] int = make(map[string] int)

키가 존재하지 않을 경우 빈값을 리턴하고 

두개의 값을 받을 수있고 첫번째는 value 두번째는 키 존재여부

맵 순회

for 키,값 :=range 맵{}

맵 데이터 삭제

delete(map,key)

맵 안에 맵 만들기



728x90

댓글