이제 Go에 대한 기초적인 지식을 습득했으니까 실전에 적용해 볼 시간이다.그러기 위해선 가장 쉬운 방법이 문제를 푸는 것이다.이때까지 배운 지식들로 풀 수 있을만한 문제를 백준에서 찾았다. 백준 1015번 문제인 수열 정렬이다.수열이 주어지고 이 수열이 정렬되었을 때 각 숫자의 인덱스 위치를 출력하면 되는 문제다. package mainimport "fmt"func main() { var n int fmt.Scan(&n) var a []Node for i := 0; i a[j].data) || (i > j && a[i].data == a[j].data) { index++ } } a[i].index = index } for i := 0; i 나는 이렇게 풀었다.알고리즘이 좋은지는 모르..
JSONJSON(JavaScript Object Notation)은 Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷이다.장점은 모두 유니코드여서 사람이 읽기 쉽고 간결하게 표현되어있다.Go 언어로 JSON을 만들 수 있다. 그것을 Marshalling이라고 한다.package mainimport ( "fmt" "encoding/json")type Person struct { Name string Age int}func main() { p := Person{Name: "John", Age: 25} byteData, err1 := json.Marshal(p) // Go to JSON if err1 != nil { fmt.Println(err1) return }..
배열package mainimport ( "fmt")func main() { var x [5]int // 초기화 하지 않으면 0으로 초기화 됨 var y [5]string // 초기화 하지 않으면 ""으로 초기화 됨 fmt.Println(x) // [0 0 0 0 0] fmt.Println(y) // [ ] var z [5]int = [5]int{1, 2, 3, 4, 5} fmt.Println(z) // [1 2 3 4 5] a := [...]int{1, 2, 3, 4, 5} // 배열의 크기를 ... 으로 지정하면 초기화 값의 개수만큼 크기가 정해짐 for index, value := range a { fmt.Println(index, value) /* 0 1 1 2 2 3 3..
포인터포인터는 메모리에 있는 일부 데이터에 대한 주소다.& : 변수나 함수의 주소를 반환하는 연산자* : 주소의 데이터를 반환하는 연산자 (&의 반대)var x int = 1var y intvar ip *intip = &xy = *ip // y == 1 new()new()는 변수를 만드는 또 다른 방법이다.변수를 반환하는 대신 변수에 대한 포인터를 반환하는 함수다.따라서 new()는 변수를 만들고 해당 변수에 대한 포인터를 반환한다.new()를 사용하면 변수가 기본적으로 0으로 초기화된다.ptr := new(int)*ptr = 3 변수의 범위변수의 범위는 코드에서 변수에 접근할 수 있는 위치다.따라서 변수 범위는 코드에서 변수 참조가 확인되는 방식을 정의한다.var x = 1func f() { fm..
Hello, World! 출력하기// test.gopackage mainimport "fmt"func main() { fmt.Println("Hello, World!")}위 코드는 Go에서 Hello, World!를 출력하는 간단한 코드다.항상 main이라는 패키지가 하나 있어야 하고, 거기서 실행이 시작된다.main package는 main() 함수가 있어야 하고, main()이 코드가 실행이 시작되는 곳이다.파이썬처럼 세미콜론(;)을 안 붙여도 된다. Import다른 패키지에 액세스하는 데 사용되는 키워드다.fmt(format)을 import 해야 Println이라는 함수를 사용할 수 있다. import는 package를 가져오는 것과 같다. Go ToolGo 소스 코드를 관리하는 데 사용되는 일반적..
Go란?구글에서 만든 프로그래밍언어로 전반적으로 C언어에 가까운 객체 지향 언어다. Go의 장점실행 속도가 빠르다.Garbage collection이 있다.간단한 객체동시성과 효율적인 동시성 구현이 내장되어 있다. Compiled vs InterpretedCompilation코드를 실행하기 전에 compiler가 instruction들을 기계어로 번역하는 것. 컴파일 된 코드는 빠르다.ex) C, C++, Java(부분적으로) Interpretation코드가 실행되는 중에 interpreter가 instruction들을 번역하는 것. 인터프리터를 사용한 코드는 느리지만 코딩이 더 쉬워진다. 또한 메모리 관리를 자동적으로 해서 사용하지 않는 변수와 기타 데이터를 없앨 수 있다.ex) Python, Java..