잠시만 기다려 주세요

     '시장이나 돌면서 가짜 민생 외치는 이재명을 규탄한다. 싸우지 않을 거면 내려와라... 야당대표는 당신의 방탄이나 하는 자리가 아니다.'
전체검색 :  
이번주 로또 및 연금번호 발생!!   |  HOME   |  여기는?   |  바다물때표   |  알림 (16)  |  여러가지 팁 (1056)  |  추천 및 재미 (152)  |  자료실 (22)  |  
시사, 이슈, 칼럼, 평론, 비평 (602)  |  끄적거림 (129)  |  문예 창작 (705)  |  바람 따라 (69)  |  시나리오 (760)  |  드라마 대본 (248)  |  
살인!


    golang

golang - 단숨에 Go언어(Golang) 배우기
이 름 : 바다아이   |   조회수 : 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"
)

var print = 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"
)

var print = fmt.Println

func add(a int, b int, c chan int) {
    c <- a + b
}

func main() {
    var c = make(chan int)
    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 무조건 실행
switch *d {
case 5:
    println("******")
    fallthrough
case 6:
    println(*d)
    fallthrough
case 7:
    print("=======")
}

10. 반복문은 for만 존재, C 스타일
– for i := 0; i < 10; i++ { } - while문 대신 아래 코드처럼 사용

rand.Seed(int64(time.Now().Nanosecond())) //
"math/rand""time" Import 필요
i := rand.Intn(10)
for i == 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"])

13. 함수
 
package main

import (
    "fmt"
    "os"
)

func getCompany() string {
    return "http://theboud.com"
}

func getName() (string, string) {
    return "Kangmin", "Won"
}

func getCountOfChildren() (count int) {
    count = 2
    return
}

func main() {
    fmt.Println(getCompany())
    fmt.Println(getName())
    fmt.Println(getCountOfChildren())

    // 일시 정지를 위해
    var b []byte = make([]byte, 1)
    os.Stdin.Read(b) // 닉네임 사용
}

14. 구조체, 인터페이스
– 클래스는 없고 구조체를 이용함
– 인터페이스의 사용법이 특이함
package main

import (
    "fmt"
    "os"
)

// 구조체
type Circle struct {
    x float64
    y float64
    r float64
}

//---------- 클래스는 없고 아래와 같이 사용 ----------//
type Rectangle struct {
    width  float64
    height float64
}

// 메소드
func (rect Rectangle) getWidth() float64 {
    return rect.width
}

//----------------------------------------------//
// 인터페이스 (동일한 메소드를 구현한 구조체의 객체를 넘겨서 사용)
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
 
| |





      1 page / 6 page
번 호 카테고리 제 목 이름 조회수
179 golang golang , ... 바다아이 1725
178 golang golang , map . 바다아이 1326
177 golang Golang (, , data ) , ... 바다아이 1337
176 golang golang sort ... 바다아이 1569
175 golang golang html.EscapeString html.UnescapeString input value ... 바다아이 1695
174 golang golang go.mod go.sum . GOPATH SRC not module, 1.16 . 바다아이 4969
173 golang go 1.16 ... is not in GOROOT.. GOPATH .... . 바다아이 5867
172 golang , String Formatting 바다아이 7504
171 golang rand.Intn , random, , . 바다아이 6966
170 golang golang ... 바다아이 10058
169 golang golang gopath, goroot .. golang 바다아이 7636
168 golang golang ... Force download file example 바다아이 9428
167 golang golang , , cpu, memory, disk 바다아이 10723
166 golang golang , ... GOOS, GOARCH 바다아이 8497
165 golang golang checkbox ... 바다아이 8249
164 golang golang , , http .... 바다아이 8022
163 golang golang nil , nil , nil ... 바다아이 8369
162 golang 2 golang, go , .... golang .... 바다아이 11237
161 golang golang postgresql, mysql, mariadb ... ` Grave () .. .. 바다아이 8561
160 golang golang postgresql mysql, mariadb scan , null .. 바다아이 8703
159 golang golang , iconv 바다아이 11493
158 golang golang quote escape, unquote 바다아이 8899
157 golang golang , http errorLog , , ... 바다아이 9002
156 golang golang interface , 바다아이 8476
155 golang golang struct .... 바다아이 9146
154 golang golang map map , 바다아이 8672
153 golang golang map .... .... 바다아이 8191
152 golang golang slice copy 바다아이 8288
151 golang golang goto 바다아이 9149
150 golang golang slice sort , int, string, float64 바다아이 8628
| |









Copyright ⓒ 2001.12. bada-ie.com. All rights reserved.
이 사이트는 리눅스에서 firefox 기준으로 작성되었습니다. 기타 브라우저에서는 다르게 보일 수 있습니다.
[ Ubuntu + GoLang + PostgreSQL + Mariadb ]
서버위치 : 오라클 클라우드 춘천  실행시간 : 0.2241
to webmaster... gogo sea. gogo sea.