Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 도커
- 쿠버네티스
- 구글클라우드서밋
- docker
- AWS #빅데이터 #분석 #데이터
- 구글
- cdk
- cloud
- GCP
- 구글 클라우드
- 코세라
- 마이크로서비스
- go
- aws
- DataFlow
- golang
- nnictl
- Kubernest
- 머신러닝
- 클라우드 자격증
- 구글클라우드
- Dataproc
- Associate
- 네트워크
- 딥러닝
- 클라우드
- 구글클라우드플랫폼
- coursera
- 자격증
Archives
- Today
- Total
JD의 블로그
고랭(Golang) 기초(1) 본문
고랭(Golang)을 배워야지 배워야지 하다가, 이제 하나씩 정리해보려고 한다.
패키지 (Package)
- 모든 Go 프로그램은 패키지로 구성되어 있다.
- 패키지 이름은 디렉토리 경로의 마지막 이름을 사용하는 것이 규칙이다.
- path/filepath => package filepath
익스포트(Exported names)
- 패키지를 import하면 외부로 메서드나 변수 상수 등에 접근할 수 있다.
- 대문자로 시작하면 패키지를 사용할 수 있는 장소에 접근할 수 있는 exported name이 된다.
- 즉, 소문자로 입력하게 되면 에러가 난다. (ex math.Pi (O), math.pi (X) )
- 에러 : cannot refer to undepxed name math.pi
함수(Function)
- C, C++, Java 언어와 다르게 매개변수의 타입은 변수명 뒤에 명시한다.
- 코드를 왼쪽에서 오른쪽으로 읽을 때 자연스럽게 읽기 위해서이다.
- 예시 ) 아래 코드
func add(x int, y int) int {
return x + y
}
- 두 개 이상의 매개변수가 같은 타입일 때, 마지막 매개변수에만 타입을 명시하고 나머지는 생략할 수 있다.
func add(x, y int) int {
return x + y
}
- 하나의 함수는 여러 개의 결과를 반환할 수 있다.
func swap(x, y string) (string, string) {
return x + y
}
- 반환 값에 이름을 부여하면 변수처럼 사용 가능하며, 반환 값을 지정하지 않은 return 문장은 현재 결과 값을 알아서 반환합니다.
func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}
func main() {
fmt.Println(split(17))
}
result : 7 10
변수(Variables)
- 변수 선언을 위해 var를 사용합니다.
- 타입은 문장 끝에 명시합니다.
var x, y, z int
var c, python, java bool
- 변수 선언과 초기화를 각각 할 수 있다.
- 초기화를 하는 경우 타입을 생략할 수 있다. 변수의 타입은 초기화 하고자 하는 값에 따라 결정된다.
var x, y, z int = 1, 2, 3
var c, python, java = true, false, "no!"
- 변수의 짧은 선언 : 함수 내에서 := 을 사용하면 var과 명시적인 타입 지정을 생략할 수 있다.
- 함수 밖에서는 := 선언을 사용할 수 없다.
func main() {
var x, y, z int = 1, 2, 3
c, python, java := true, false, "no!"
}
상수(Constants)
- 상수는 const 키워드와 함께 변수처럼 선언한다.
const Pi = 3.14
func main() {
const World = "안녕"
fmt.Println("Hello", World)
fmt.Println("Happy", Pi, "Day")
const Truth = true
fmt.Println("Go rules?", Truth)
}
result :
Hello 안녕
Happy 3.14 Day
Go rules? true
반복문
- Golang에는 반복문이 for 밖에 없다.
- C와 Java와 유사하지만, 소괄호 ( )가 필요없다. 하지만 실행을 위한 중괄호 { } 는 필요하다.
func main() {
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
fmt.Println(sum)
}
- 전, 후 처리를 제외하고 조건문만 표현할 수도 있다. (while을 사용하듯 for을 사용할 수 있다.)
func main() {
sum := 1
for sum < 1000 {
sum += sum
}
fmt.Println(sum)
}
조건문
- 조건 표현을 위해 소괄호 ( ) 가 필요없다. 하지만 실행을 위한 중괄호 { } 는 필요하다.
func sqrt(x float64) string {
if x < 0 {
return sqrt(-x) + "i"
}
return fmt.Sprint(math.Sqrt(x))
}
- 조건문 앞에 짧은 문장을 실행할 수 있다. 짧은 실행문에서 선언된 변수는 if 안쪽 범위에서만 사용 가능하다.
func pow(x, n, lim float64) float64 {
if v := math.Pow(x, n): v < lim {
return v
}
return lim
}
- if문 앞에서 짧게 선언된 변수는 else문 안에서도 사용할 수 있다.
func pow(x, n, lim float64) float64 {
if v := math.Pow(x, n): v < lim {
return v
} else {
fmt.Printf("%g >= %g\n", v, lim)
}
return lim
}
연습 : 함수와 루프 연습법
문제 : 제곱근 함수를 뉴턴의 방법으로 구현하라
뉴턴의 방법 : 초기값 z를 선택한 후에 z = z - (z * z - x) / (2*z) 를 이용하여 반복적으로 Sqrt(x) 함수의 근사값을 찾아가는 방법을 말한다.
solution:
더보기
package main
import {
"fmt"
"math"
)
func Sqrt(x float64) (float64, float64, int) {
z, num := float64(6), 0
for z - math.Sqrt(x) > 0.001 {
z = z - (z*z - x) / (2*z)
num += 1
}
return z, math.Sqrt(x), num
}
func main() {
fmt.Println(Sqrt(2))
}
참고 자료 : A Tour of Go
'-프로그래밍 언어 > Golang' 카테고리의 다른 글
고랭(golang) 기초(2) (0) | 2020.01.21 |
---|