이 름 : 바다아이
|
조회수 : 11723
짧은 주소 : https://www.bada-ie.com/su/?521591784741
단순실행 : go run 파일명
실행파일만들기 : go build 파일명
[[ 히스토리 ]]
– Go 언어는 구글이 개발한 프로그래밍 언어
– 2007년에 켄 톰슨, 롭 파이크, 로버트 그리즈머가 최초 설계를 시작했으며 2008년부터 본격적으로 개발
– C언어의 모체가 된 B언어와 유닉스의 개발자로 유명한 켄 톰슨이 참여하여 큰 화제가 된 언어
– Go 언어는 빠른 성능, 안정성, 편의성, 쉬운 프로그래밍을 목표로 개발된 범용 프로그래밍 언어
– Go 언어의 문법은 대체로 C와 비슷함 (단, 세미클론이 필수가 아닌 옵션, 간결한 문법을 추구함)
[[ Go 설치 ]]
– 사이트로 이동: https://golang.org/dl/
– 다운로드 받고 설치
– 시작 > 실행 > ‘cmd’ 실행
– go 입력 > 엔터
– 안되면 재부팅 후 시도
– 아래와 같이 뜨면 성공
[[ IDE 설치 ]]
– LiteIDE 다운로드: https://sourceforge.net/projects/liteide/files/
– 최신 버전 폴더에서 OS에 맞게 다운로드 및 압축 풀기 (포터블 버전)
– bin 폴더의 liteide.exe 실행
– 단축키 ::
Ctrl + B : 빌드
Ctrl + R : 빌드 및 실행(디버깅 하지 않음)
Ctrl + T : 테스트(?)
F9 : BP 설정 및 해제
F5 : 디버깅 시작 및 계속(Continue)
Shift + F5 : 디버깅 중지
[[ Hello World ]]
– IDE 실행하고 File > New > Go1 Package Project 선택
– 모든 파일 삭제
– main.go 파일 생성
– 아래 코드 작성 후 저장
package main
import( "fmt" "os" )
varprint= fmt.Println
func main(){ print("Hello World")
// 일시 정지를 위해 var b []byte=make([]byte,1)
os.Stdin.Read(b) }
– Ctrl + R
– Build Output 창에 Hello World 뜨면 성공 (exe 파일도 생성됨)
[[ Go 언어 ]] 1. 세미콜론(;)은 옵션 (안 쓰는게 일반적임) 2. 중괄호({})의 시작은 항상 같은 줄에.
// 가능 func main(){ }
// 에러 func main() { }
3. 들여쓰기는 반드시 탭(Tab) 키를 사용. 4. 주석은 C 스타일 (// 와 /**/) 5. 변수와 상수
// 변수 (사용하지 않으면 컴파일 시 에러) var site string="wonhada.com" var site ="wonhada.com"// 자료형 생략 가능
site :="wonhada.com"// :을 이용해서 var 없이 변수 선언 가능 var userCount int=1
// 상수 const userCount int=1
// 한번에 선언 가능 var(
site string="wonhada.com"
author string="Kangmin Won"
userCount int=100 ) print(site +":"+ author +":"+ strconv.Itoa(userCount))// "strconv" Import 필요
6. 연산자(+, -, *, /, …)도 C 스타일 (산술, 비교, 비트)
– 대입연산자는 := 하나 더 추가 7. 채널 (Channel)
– 고루틴(go 함수명())이 서로 통신하고 변수를 동기화할 수 있는 수단.
– Go의 동시성(concurrency) 관련해서 학습 필요.
package main
import( "fmt" "os" )
varprint= fmt.Println
func add(a int, b int, c chanint){
c <- a + b }
func main(){ var c =make(chanint) go add(1,3, c)// 고루틴 실행 print(<-c)
// 일시 정지를 위해 var b []byte=make([]byte,1)
os.Stdin.Read(b) }
8. 포인터
– C와 유사함 (단, new 키워드 사용 가능)
package main
import( ."fmt"// .을 사용하면 fmt.으로 안 써도 됨
WonHada "os"// 닉네임을 줄 수도 있음 )
func add(a int, b int, c *int){ *c = a + b }
func main(){ var c int
add(1,3, &c)
Println(c)// Println 바로 사용
d :=new(int)
add(1,4, d)
Println(*d)
// 일시 정지를 위해 var b []byte=make([]byte,1)
WonHada.Stdin.Read(b)// 닉네임 사용 }
9. 조건문은 C 스타일 (if, switch)
– 단, switch문이 좀 특이함
– switch문에 break 생략 가능
– case를 연속으로 여러개 사용 불가 (break를 생략할 수 있는 이유)
– fallthrough 키워드: 조건에 맞는 case 다음 case 무조건 실행
10. 반복문은 for만 존재, C 스타일
– for i := 0; i < 10; i++ { } - while문 대신 아래 코드처럼 사용
rand.Seed(int64(time.Now().Nanosecond()))// "math/rand"와 "time" Import 필요 i:= rand.Intn(10) fori==5{ println("무한도전") }
11. 배열
var arr [3]string=[3]string{"Hello","Golang","World"}// 배열 var slice []string=[]string{"Hello","Golang"}// 슬라이스 (크기없는 배열)
slice = append(slice,"World")// 마지막 요소 추가
slice = slice[1:]// 첫 번째 요소 제거
fmt.Println(arr[0], strings.Join(slice," "))
12. 맵
// _map := map[string]string { // 아래와 같음 var _map map[string]string=map[string]string{ "name":"Kangmin Won", "country":"Korea", "company":"http://theboud.com", }
fmt.Println(_map["name"])
//----------------------------------------------// // 인터페이스 (동일한 메소드를 구현한 구조체의 객체를 넘겨서 사용) type Primitive interface{
getWidth()float64 // getHeight() float64 // Rectangle은 이 함수가 없으므로 사용할 수 없음 }
func main(){ var c Circle = Circle{x:1, y:2, r:3}
fmt.Println(c.r)
c2 := Circle{2,4,8}
fmt.Println(c2.r)
rect := Rectangle{100,200}
fmt.Println(rect.getWidth())
p := Primitive(rect)
fmt.Println(p.getWidth())
var p2 Primitive = rect
fmt.Println(p2.getWidth())
// 일시 정지를 위해 var b []byte=make([]byte,1)
os.Stdin.Read(b)// 닉네임 사용 }
출처 : https://blog.wonhada.com/?p=1930
|
|
번 호
카테고리
제 목
이름
조회수
Copyright ⓒ 2001.12. bada-ie.com. All rights reserved.
이 사이트는 리눅스에서 firefox 기준으로 작성되었습니다. 기타 브라우저에서는 다르게 보일 수 있습니다.
[ Ubuntu + GoLang + PostgreSQL + Mariadb ]
서버위치 : 오라클 클라우드 춘천 실행시간 : 0.2241 초 to webmaster... gogo sea. gogo sea.