예약된 키워드
break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var기본 변수 선언 방법
// default var a,b,c int var b = 5 // shortcut // local a := 5 //const const hi = "HI" const ( //multi hi = "HI" hi2 = "HI2" )package
Access modifier
Data Type
"" Double Quote를 이용한 일반 String 선언 => \n 을 NewLine으로 해석Type
str := "ABC" bytes := []byte(str)Operator
!var a int = 1 var b = &a // b는 a의 주소를 가진다 var c = *b // a 주소의 실제값을 가진다함수
기본적으로 Pass By Value 형식이다
시그니처 형태
리턴 타입에 parameterName 을 부여하여 코드 내에서 사용이 가능하다
func functionName(parameterName type) returnType { } func functionName(parameterName type) (returnType, returnType2 ) { //return이 2개 이상인 경우 }
동일한 패키지 안에서 타입의 확장 함수를 작성 가능하다 = Value receiver
다만 type의 값을 변경해야 하거나 값 복사가 필요하지 않다면 Point receiver 를 사용하라
type MyFloat float64 func (f MyFloat) Abs() float64 { if f < 0 { return float64(-f) } return float64(f) } func (f *MyFloat) Scale(f float64) { f = 2 } f := MyFloat(1) fmt.Println(f.Abs()) fmt.Println(f.Scale())
struct
type Dog struct { S string }interface
method 선언의 모음
덕 타이핑 스타일을 사용한다
type Animal Interface{ Bark() string } type Dog struct { S string } func (dog Dog) Bark() string { fmt.Println(dog.S) } var animal Animal = Dog { "hi" }
파라미터로 모든 인터페이스를 나타내기 위한 방법
func name(v interface{}) returnType;
분기문
If , else if , else
if a == 1 { } else if a == 2 { }Switch / Case
switch val.a() { case 1: ... case 2: ... default: ... }