Language/고 Go
-
Go : init() 함수Language/고 Go 2023. 12. 17. 00:01
출처 : https://inf.run/tfefs 프로그램 최초 동작 시 가장 먼저 실행되는 함수로 init() 함수를 이용하여 프로그램의 전반적인 설정을 구성하는 작업을 수행할 수 있다. 특징 main() 함수보다 먼저 실행 된다. 가장 먼저 초기화 되는 작업 작성 시 유용하다. 모든 파일에 init() 함수가 있고 모든 패키지 호출 레벨이 같은 경우 패키지 이름 -> 파일 이름의 알파벳 순서로 init()을 실행한다. 하나의 파일에서 init() 메서드의 선언 갯수는 여러개일 수 있다. 하지만 이런 경우는 거의 사용하지 않는다. package section4 import "fmt" func init() { fmt.Println("Section4 Package - init1 - 1 go go") } fu..
-
Go : 접근 제어 설정Language/고 Go 2023. 12. 17. 00:01
출처 : https://inf.run/tfefs Go 언어에서는 변수, 상수, 함수, 메서드, 구조체 등 식별자에 대한 접근 제어 설정을 식별자의 명명 방법으로 설정할 수 있다. 소문자로 시작 : private 대문자로 시작 : public 다음과 같이 2개의 함수를 lib2 패키지에 정의했을 때 package lib2 func CheckNum1(c int) bool { return c > 100 } func checkNum2(c int) bool { return c > 1000 } 외부 패키지 함수에서 lib2 패키지를 import 하여 호출 가능한 함수는 public인 CheckNum1() 뿐이다. lib2 패키지 안의 다른 함수에서는 private인 checkNum1() 함수와 public인 Che..
-
Go : 라이브러리 import 시 Alias 별칭 사용하기Language/고 Go 2023. 12. 17. 00:01
출처 : https://inf.run/tfefs Go 언어는 소스 코드 저장 시 사용하지 않은 라이브러리가 import 선언되어있을 때 컴파일러가 자동으로 삭제해버린다. 이를 방지하기 위해서는 _ 문자를 해당 라이브러리 선언문에 별칭으로 작성해주면 된다. package section4 import ( "fmt" _ "section4/lib" check100Up "section4/lib2" ) func Access2() { var num = 109 fmt.Println(num, "> 100 :", check100Up.CheckNum1(num)) fmt.Println(num, "> 1000 :", check100Up.CheckNum2(num)) }
-
Go : packageLanguage/고 Go 2023. 12. 17. 00:01
출처 : https://inf.run/tfefs 패키지 패키지 선언으로 코드 구조화(모듈화) 및 재사용 가능 응집도는 높이고, 결합도는 느슨하게 해야 유지보수가 쉽고 가독성이 좋으며 재사용이 가능한 클린 코드가 된다. 그렇기 때문에 다른 언어와 마찬가지로 go 또한 패키지 단위의 독립적이고 작은 단위로 개발한다. 패키지 이름 = 디렉토리 이름 main 함수가 들어있지 않은 소스 파일들은 디렉토리 명을 패키지 명으로 사용한다. package main main 패키지는 특별하게 인식한다. 컴파일러는 main 패키지를 공유 라이브러리가 아니라, 프로그램의 시작점 start point로 인식한다. main 함수는 무조건 main 패키지에서 작성되어야 하며, 이외의 파일들은 자신이 소속된 폴더 이름을 패키지 명으..
-
Go : Switch 조건문Language/고 Go 2023. 12. 17. 00:01
출처 : https://inf.run/tfefs 구조 switch Expression { case condition: // code case condition: // code default: // code } 특징 1. switch 절에 Expression 생략 가능 특징 2. case 절에 expression 사용 가능 특징 3. switch와 case의 들여쓰기 깊이가 같아야 함 예제 1 func main() { a := -7 switch { // expression 생략 case a 0: fmt.Println(a, "은(는) 양수") } } 예제 2 공식문서에 의하면 go 에서 switch문에 사용할 변수를 생성할 때는 예제1 처럼 switch문 밖에서 선언하는것 보다 아래와 같이 Expressio..
-
Go : if 조건문Language/고 Go 2023. 12. 17. 00:01
출처 : https://inf.run/tfefs Go 에서의 if 조건문은 다음의 특징을 갖는다. if 문의 조건절 작성 시 소괄호가 없음 컬리 브레이스 시작 문자 {를 조건절 옆에 작성해야 한다. 조건절의 결과가 정확하게 true, false인 식만 사용할 수 있다. 자동 형변환이 불가능하기 때문에 1 또는 0을 반환하는 식은 사용할 수 없음 if문 예시 1 package main import "fmt" func main() { a := 10 if a > 100 { fmt.Println("a는 100 보다 크다.") } else if a > 50 { fmt.Println("a는 50 보다 크다.") } else { fmt.Println("a는 50 보다 작거나 같다.") } if b := 1; b
-
Go : 열거형 상수Language/고 Go 2023. 12. 17. 00:01
출처 : https://inf.run/tfefs 상수를 이용할 때 java에서의 enum 처럼 열거된 상수들에 0부터 시작하는 번호를 붙여주는 iota 라는 것이 있다. iota의 사용 예시는 다음과 같다. iota를 사용하지 않고 상수만 선언해서 사용할 경우 package main import "fmt" function main() { const ( Jan = 1 Feb = 2 Mar = 3 Apr = 4 May = 5 Jun = 6 ) fmt.Println(Jan) fmt.Println(Feb) fmt.Println(Mar) fmt.Println(Apr) fmt.Println(May) fmt.Println(Jun) } 출력 값 위의 예제에 iota를 적용 package main import "fmt"..
-
Go : 자료형 및 변수, 상수Language/고 Go 2023. 12. 17. 00:01
참고 https://inf.run/tfefs https://untitledtblog.tistory.com/26 자료형 정수 : 0 부호 있는 정수형 int, int8, int16, int32, int64 int는 32bit 시스템에서는 int32, 64bit 시스템에서는 int64 부호 없는 정수형 uint, uint8, uint16, uint32, uint64 uint는 32bit 시스템에서는 uint32, 64bit 시스템에서는 uint64 uint와 같은 크기를 갖는 포인터형 uintptr 실수 : 0.0 float32 32비트 부동 소수점 7자리 정밀도 float64 64비트 부동 소수점 12자리 정밀도 복소수 complex64, complex128 문자열 : "" string 바이트 byte u..
-
Go : 여러개의 멀티 프로젝트 실행Language/고 Go 2023. 12. 17. 00:01
참고 : https://dev.to/chandrapenugonda/vscode-multiple-go-projects-in-a-directorygo-118-3l7i vscode에서 go 1.18 버전 이상부터 적용되는 방법이다. goland를 통해서 실행하면 왠만한 실행 에러는 피해가는것 같다. 하지만 난 가난한 취준생이기 때문에 무료인 vscode로 진행하였다. 프로젝트 구조가 다음과 같을 때 실행 에러/경고가 발생하지 않는다. go ├─ section1 │ ├─ go.mod │ └─ test.go ├─ section2 │ ├─ go.mod │ └─ var1.go └─ go.work go 프로젝트 안에 section1 프로젝트와 section2 프로젝트가 있다고 볼 수 있다. 각각의 프로젝트를 경고 및 ..