Skip to content

highlightime/GoBeginner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 

Repository files navigation

Study for Go Beginner

Go tutorial

Go의 경우, 지정된 경로에서 go 코드를 작성해야한다

Go PATH

Mac : usr/local/go OR ~/go

(bin pkg src 이 있는 디렉토리, src가 없다면 src 파일 만들기)

Windows : C:\Program Files\Go 혹은

echo %GOPATH% cmd 창의 결과값이 지정된 경로

  1. 소스코드가 들어갈 디렉토리 만들기 in ~/go/src/
mkdir temp.com
  1. tracking dependencies 위한 새 모듈 init
cd temp.com
go mod init temp.com
  1. 소스코드 작성하기 - main.go
package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}
  1. 실행하기
go run .

원하는 모듈, 코드를 다운받는 방법

NodeJS -> npm, python->pip 이지만,

Go -> 모든 것을 다운로드 경로별로 디렉토리가 만들어져 관리됨

jsonpackage 따위는 없답니다..!

Mac 에서 vscode .code 명령어 실행

command + shift + p

Shell Command : install 'code' command in PATH 검색해 install

현재 경로에서 vscode를 열 수 있다.

. code

Import

import "fmt"
//or
import (
  "fmt1"
  "fmt2"
)

Variables and Constants

constant 는 변경 불가

const a string = "hi"
a = "bye" // 불가능

var 는 변경 가능

var name string = "y"

name = "z" // 가능

축약형 :=

타입은 첫번째 값을 기준으로 자동으로 찾아줌

func 안에서만 됨

name := "y"  

func

return 타입을 뒤에 적어줌

파라미터의 타입을 뒤에 적어줌

func multiply(a int,b int) int{
  return a * b
}

return 값들을 2개이상 받을 수 있다!

func lenAndUpper(name string)(int,string){
  return len(name),strings.ToUpper(name)
}

... : arguments 여러개 받기

func repeat(words ...string){
  fmt.Println(words)
}
func main(){
  repeat("kim","lee","park")
}

return 값을 함수 선언시에 나타내면 return 문을 생략할 수 있다.

func lenAndUpper(name string)(leng int, upper string){
  leng = len(name)
  upper = strings.ToUpper(name)
}

defer : func가 끝나고 나서 code를 실행할 수 있다

func lenAndUpper(name string)(leng int, upper string){
  defer fmt.Println("fin")
  leng = len(name)
  upper = strings.ToUpper(name)
}

반복문

for 이용

func superAdd(numbers ...int){
  for i:=0;i<len(numbers);i++{
    total+=numbers[i]
  }
}

range 이용

func superAdd(numbers ...int) {
  for _, number := range numbers{ //_는 index
    total+=number
  }
}

while 이용 -> 따로 없음

func main(){
  for{
    fmt.Println("loop")
    return // break 대신 종료문
  }
}

조건문

if 뿐만을 위한 변수 생성 가능

func canIDrink(age int)bool{
  if koreanAge := age+2; koreanAge < 18 {
    return false
  }
  return true
}

Switch

func canIDrink(age int)bool{
  switch koreanAge := age+2; koreanAge{
    case 10:return false
    case 18:return true:
  }
  return false
}

Pointers

C 와 동일

func main(){
  a := 2
  b := &a
  *b =20
  fmt.Println(a)
  a = 15
  fmt.Println(*b) //a의 주소값을 참조하기 떄문에 a가 바뀔때 같이 바뀐다
}

Arrays

func main(){
  names := []string{"kim","lee","park"}
  names = append(names,"seo")
  fmt.Println(names)
}

Maps

func main(){
  infos :=map[string]string{"name":"lemon","age":"12"}
  //    map[key_type]value_type
  for keys, value := range infos{
    fmt.Println(value)
  }
}

Struct

constructor method 가 없다.

Java : constructor(), python: __ init __

type person struct{
  name string
  age int
  favFood []string
}

func main(){
  favFood := []string{"a","b"}
  kim :=person{name:"kim",age:18,favFood:favFood}
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published