본문 바로가기

IT/golang

Go! 언어 시작

반응형

2023년의 언어로 Go 를 정했다.

쓸모는 나중에 생각하고 일단 시작한다.

 

설치!

https://go.dev/dl/

 

Downloads - The Go Programming Language

Downloads After downloading a binary release suitable for your system, please follow the installation instructions. If you are building from source, follow the source installation instructions. See the release history for more information about Go releases

go.dev

그냥 한다! 쉽다!

 

기본 헬로우 월드!

package main

import "fmt"
func main(){
	fmt.Println("Hello, World!")
}

세미콜론 안쓴다. 

 

Go에는 while 없다!

그래서 이렇게 쓰면 while 과 같다!

 

package main

import "fmt"

func main(){
	i := 0
	for ok := true; ok; ok= (i!= 10) {
		fmt.Println(i*i, " ")
		i++
	}
	fmt.Println()
}

콘솔 입력은 fmt.Scanln

c언어와 같이 문자열 변수 선언후, 포인터 주소를 넘겨준다 (&)

 

package main

import "fmt"

func main(){
	fmt.Println("이름을 알려달라!")
	var name string
	fmt.Scanln(&name)
	fmt.Println("기미노 나마에와:", name)
}

콘솔 실행 인수는 os 패키지를 이용한다. os.Args

숫자변환 패키지는 strconv

에러처리도 포함하고, 입력된 인수중 최소, 최대 값을 출력

 

package main

import (
	"fmt"
	"os"
	"strconv"
)

func main(){
	arguments := os.Args
	if len(arguments) == 1 {
		//인수는 기본 1개이다. ( 실행어 )
		fmt.Println("인수를 입력하라!")
		return
	}

	var min, max float64
	for i :=1; i< len(arguments); i++ {
		n, err := strconv.ParseFloat(arguments[i], 64)
		if err != nil {
			continue
		}
		//처음은 바로 셋팅
		if i == 1 {
			min = n
			max = n
			continue
		}

		if n < min {
			min = n
		}
		if n> max {
			max = n
		}
	}

	fmt.Println("가장작은 수 : " , min)
	fmt.Println("가장큰    수 :", max)
}

고루틴의 매우매우 샘플스

 

package main

import (
	"fmt"
	"time"
)

func myPrint(start, finish int){
	for i:=start; i <= finish;i++{
		fmt.Print(i, " ")
	}
	fmt.Println()
	time.Sleep(100*time.Microsecond)
}

func main(){
	for i:=0;i<5;i++{
		go myPrint(i, 5) //고루틴
	}
	time.Sleep(time.Second)
}

쓰레드와 고루틴은 비슷하면서도 다름!

반응형