반응형

go 22

Golang 디렉토리 생성(os.Mkdir, os.MkdirAll)

Go에서 하나의 디렉토리를 생성할 때는 os.Mkdir() 함수를 사용한다. 만약 디렉토리의 계층(하위 디렉토리 생성)을 구분하여 생성하고 싶으면 os.MkdirAll() 함수를 사용한다. 두 함수는 디렉토리의 경로와 파일 시스템 권한을 인수로 넣어주어야 한다. 다음의 예제는 os.ModePerm 함수를 사용한다. os.ModePerm 함수는 파일 또는 디렉토리의 퍼미션 모드를 나타내는 상수이다. 이 함수는 파일 시스템에서 새로운 파일 또는 디렉토리를 만들 때 사용된다. os.ModePerm 함수는 32비트의 부호 없는 정수형 상수값으로, 0777이라는 8진수 값과 동일하다. 이 값은 파일 또는 디렉토리의 퍼미션 모드를 의미한다. 참고로 0777은 사용자, 그룹, 기타 사용자 모두가 읽기, 쓰기, 실행 ..

Golang 2023.03.15

Golang if문에 세미콜론(;)

Go언어에서 if문 사용 시 세미콜론을 사용할 수 있다. 예를 들면 다음과 같다. 아래의 두 예제는 같은 의미이다. 첫번째 예제) if v, err := Read(); err == nil { // do something with v, because Read() did not // had an error (err) } 두번째 예제) if v, err := Read(); err == nil { // do something with v, because Read() did not // had an error (err) } 두 문법의 결과는 같지만 차이점은 첫 번째 예제에서는 v와 err의 범위는 if {}블록으로 제한된다. 두 번째 예제에서는 v와 err은 선언된 블록에 속해 있다. 즉, if {}에 속해있지 ..

Golang/Basic 2023.03.04

omitempty

Go에서는 객체를 json으로 변환하려면 struct를 선언해야 한다. omitempty는 해당 struct의 필드에 데이터가 없으면 json으로 변환 시 해당 필드는 생략된다. 즉 value가 false, 0, nil, 빈 배열 일 떄를 말한다. 사용 예시는 다음과 같다. type User struct { Name string `json:"name"` Age int `json:"age"` Email string `json:"email,omitempty"` PhNum string `json:"phNum,omitempty"` } func main() { // Json 데이터 예시 var uhm = User{ Name: "Uhm", Age: 20, Email: "uhm@gmail.com", } byte, _..

Golang 2023.01.10

Golang 문자열 다루기 (strconv, strings)

Golang을 사용하여 개발할 때 필요한 문자열을 다루는 함수들을 정리합니다. 가끔 함수명이 기억나지 않을 때, 보려고 작성 자주 사용하는 함수 정리 문자열 변환 strconv 함수 설명 사용 예시 Atoi(s string) (i int, err error) 숫자로 이루어진 string을 int으로 변환 한다. strconv.Atoi("1") // 1 Itoa(i int) string int형 숫자를 string으로 변환한다. strconv.Itoa(1) // "1" FormatFloat(f float, fmt byte, prec, bitSize) string float를 string으로 변환한다. strconv.FormatFloat(1.2, 'f', -1, 64) // "1.2" ParseFloat(s..

Golang 2022.12.10

Golang Time

time 패키지 사용 예시는 다음의 코드와 같다. package main import ( "fmt" "time" ) func main() { fmt.Println(time.Now().Format("2006-01-02 15:04:05")) } // result: 2009-11-10 23:00:00 뿐만 아니라 아래의 코드와 같이 사용이 가능하다. package main import ( "fmt" "time" ) func main() { fmt.Println(time.Now().Format("2006년01월02일 15시04분05초")) } 결과 2009년11월10일 23시00분00초 재밌다. time 패키지를 사용하다 보면 의문점이 있을 것이다. `2006-01-02 15:04:05` 이것은 어떤 의미 또는..

Golang 2022.09.13

bind: address already in use

Echo를 실행 시 다음과 같은 오류가 발생하였다. 이는 실행하려는 포트가 이미 사용중일 시 다음과 같은 오류가 발생한다. 해결 방법은 다음과 같다. 방법 1. 코드 내에서 echo를 실행할 포트를 변경해준다. 방법 2. 실행중인 프로세스를 종료한다. # fuser -k -n tcp [종료할 포트 번호] 이때 종료하려는 프로세스가 만약 같은 서버에서 다른사람이 사용하고 있는데 프로세스를 종료해버리면 많이 곤란할 것이다... 종료하기 전 잘 확인 하도록 하자.

cannot find package ~ in any of: (from $GOROOT) ~ (from $GOPATH)

리눅스 환경에서 go build를 할 시, 다음과 같은 오류 발생하였다. 원인은 작성한 코드내에서 사용할 패키지를 찾지 못해서 발생한 오류인데, 다음과 같은 해결 방법이 있다. 방법 1. 환경 변수 설정을 잘 못하여서 발생한 오류일 수도 있다. go env 명령어를 사용하여 GOPATH 확인 후 GOPATH를 재 설정한다. 방법 2. go.mod 파일을 삭제 후 go mod init [프로젝트 명] 명령어를 사용하여 .mod 파일을 새로 생성한다.

JSON data 사용하기

encoding/json 패키지를 사용하여 JSON 데이터를 사용할 수 있다. 1. Json 인코딩 Json 포멧으로 변환하기 위해서는 Marshal() 함수를 사용한다. 다음의 예제는 json 데이터를 변환하여 결과를 출력한다. package main import ( "encoding/json" "fmt" ) // json key 값 type User struct { // struct 내에 field 선언 후 뒤에 `json:"[key]"` 를 붙이면 key 값을 따로 지정할 수 있다. Id string `json:"id"` Pw int `json:"password"` } func main() { // json value 값 지정 userInfo := User{"uhm", 1234} // JSON 인코..

Golang 2022.04.23

ioutil 패키지를 사용하여 파일 읽기/쓰기

ioutil 패키지를 사용하면 간단하게 파일을 읽고 쓸 수 있습니다. 파일 내용을 작성하기 위해서는 string type을 byte slices로 변경해줘야 합니다. 또한 파일을 읽을 시 byte slices로 읽어온 내용을 사용하려면 string으로 변환 해줘야 합니다. 다음의 사용 예시를 참고하면 쉽게 이해할 수 있습니다. 사용 예시 package main import ( "fmt" "io/ioutil" "os" ) func main() { str := "Hello, World!" // 파일에 입력할 문자 내용 // 파일명은 hello.txt // str(파일에 입력할 문자)을 byte slice로 변환 // 파일권한은 664(파일소유자는 읽기/쓰기 가능, 일반 사용자는 읽기만 가능) err := i..

Golang 2022.04.23

Local package import 오류

사용자가 작성한 패키지를 사용하기 위해 import에 추가한 후 터미널에서 run을 했을 때 다음과 같은 오류가 발생하였을 때 cannot find package "" in any of : 또는 import "" cannot import absolute path 방법 1. 코드 내 import 경로가 제대로 되어 있는지 확인한다. => '상위 디렉토리 명/패키지 명" package main import ( "상위 디렉토리 명/패키지 명" ) func main() { ... } 방법 2. 모듈 확인 => .mod 파일이 생성되어 있는지 확인한다. 터미널에 ' go mod init [모듈 명] '으로 .mod 파일 생성 go mod init [모듈명] .mod 파일을 생성한 후 module 설정이 제대로 되..

Golang 2022.02.21
반응형