23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
Golang 사용법
변수 선언 : var, Short Variable Declaration Operator(:=)
Package 선언 및 활용
Struct (json 으로 변환)
Receiver function
Interface 선언, 활용
변수 선언은 아래 와 같이 선언합니다.
var 변수명 타입 - 디폴트 값이 false
var 변수명 = 값
변수명 : 값 - Short Variable Declaration Operator(:=)
package main //
import "fmt" //패키지 선언
//함수작성
func vari_check() {
//boolean
var isDev bool
var isTrue = true
//int8, byte, int16, int32, int64, uint8, uint16, uint32, rune, uint64
//byte 는 uint8 의 별칭, rune 은 int32의 별칭
var x int //0
var y int = 1
var z = 2
var a, b int = 1, 2
var c, d = 3, "a"
// float32, float64
var e float64 //0
var f = 0.0 //0
//string 타입은 rune, byte
var g rune = 'r' //114
var h string = string(g) //r
var k byte = 'k' //107
var l string = string(k) //k
//Short Variable Delcaration Operator(:=) 를 사용하여 var 와 type 키워드 없이 변수를 선언하고 바로 할당
i := 10
j := 20.5
ss := "Hello World"
fmt.Println(isDev, isTrue)
fmt.Println(x, y, z)
fmt.Println(a, b, c, d)
fmt.Println(e, f)
fmt.Println(g, h)
fmt.Println(k, l)
fmt.Println(i)
fmt.Println(j)
fmt.Println(ss)
}
func main() {
fmt.Println("Hello world!!!")
vari_check()
}
----output------
> go run main.go
Hello world!!!
false true
0 1 2
1 2 3 a
0 0
114 r
107 k
10
20.5
Hello WorldGo에서 패키지는 코드의 모듈화를 가능하게 합니다. 패키지를 사용하면 코드를 더욱 쉽게 관리하고 재사용할 수 있습니다.
Go에서 패키지 선언은 package 키워드를 사용하여 선언합니다. 패키지 이름은 파일 이름과 일치해야 합니다.
패키지를 사용하려면 다음과 같이 import 키워드를 사용하여 가져와야 합니다.
import "fmt"위 코드는 Go의 표준 라이브러리 중 하나인 fmt 패키지를 가져오는 코드입니다. fmt 패키지는 포맷된 입출력을 제공합니다.
다른 패키지를 가져오는 방법은 위와 동일합니다. 가져온 패키지를 사용하려면 패키지 이름을 접두사로 사용하여 함수나 변수를 호출하면 됩니다.
fmt.Println("Hello, World!")위 코드는 fmt 패키지의 Println 함수를 사용하여 "Hello, World!"를 출력하는 코드입니다.
Go에서 struct는 다음과 같이 정의됩니다.
type Person struct {
Name string
Age int
Email string
}필드 이름의 첫 글자는 대문자로 적어야 합니다. struct를 JSON으로 변환하려면 json 패키지를 가져와야 합니다.
import "encoding/json"
p := Person{Name: "John", Age: 30, Email: "john@example.com"}
b, err := json.Marshal(p)
if err != nil {
fmt.Println("error:", err)
}
fmt.Println(string(b))Go에서 Marshal 함수는 구조체를 JSON으로 변환하는 함수입니다. encoding/json 패키지에서 제공하는 함수입니다.
구조체를 JSON으로 변환하려면 다음과 같이 json.Marshal() 함수를 사용합니다.
위 코드는 Person 구조체를 선언하고 초기화합니다. 그리고 json.Marshal() 함수를 사용하여 Person 구조체를 JSON으로 변환합니다.
변환된 JSON은 []byte 타입으로 반환됩니다. string() 함수를 사용하여 JSON을 문자열로 변환하여 출력합니다.
출력 결과는 다음과 같습니다.
{"Name":"John","Age":30,"Email":"john@example.com"}출처: https://w.cublr.com/programming/go/golang-marshal-unmarshal/
Go 언어에서는 Receiver 함수를 사용하여 특정 타입에 대한 함수를 작성할 수 있습니다.
Receiver 함수는 func 키워드와 함께 함수 이름 앞에 특정 타입(타입과 변수명)을 괄호로 묶어 작성됩니다.
이런걸 리시버(Receiver)라고 부르고 이 리시버는 특별히 밸류 리시버(Value Receiver)라고 합니다.
리시버가 장착된 함수는 더 이상 함수가 아니라 메소드가 됩니다.
예를 들어, 다음과 같이 Person 타입에 대한 greet 함수를 작성할 수 있습니다.
type Person struct {
Name string
}
func (p Person) greet() {
fmt.Println("Hello, my name is", p.Name)
}
func main() {
p := Person{Name: "John"}
p.greet()
}위의 예제에서는 Person 타입에 대한 greet 함수를 작성합니다. Person 타입의 Name 필드를 출력하는 함수입니다.
greet 함수는 Person 타입의 Receiver 함수로 작성됩니다. main 함수에서는 Person 구조체를 선언하고 greet 함수를 호출합니다.
출력 결과는 다음과 같습니다.
Hello, my name is JohnReceiver 함수를 사용하면 특정 타입에 대해 함수를 작성할 수 있으므로, 코드를 더욱 모듈화하고 응집도를 높일 수 있습니다.
Receiver 함수를 사용하여 코드를 작성할 때는, 타입의 필드와 메서드를 잘 구분하여 작성하는 것이 좋습니다.
이를 통해 코드의 가독성과 유지보수성을 높일 수 있습니다.
출처: https://kamang-it.tistory.com/entry/Go15%EB%A9%94%EC%86%8C%EB%93%9CMethod%EC%99%80-%EB%A6%AC%EC%8B%9C%EB%B2%84Receiver
Go에서 인터페이스는 다른 언어와 마찬가지로 추상화를 제공합니다. 인터페이스는 다음과 같이 선언됩니다.
type Shape interface {
area() float64
perimeter() float64
}위의 예제에서는 Shape 인터페이스를 선언합니다. Shape 인터페이스는 area()와 perimeter() 메서드를 가지고 있습니다.
구조체나 사용자 정의 타입이 area()와 perimeter() 메서드를 구현하면 해당 타입은 Shape 인터페이스를 구현하게 됩니다.
type Rectangle struct {
width, height float64
}
func (r Rectangle) area() float64 {
return r.width * r.height
}
func (r Rectangle) perimeter() float64 {
return 2*r.width + 2*r.height
}위의 예제에서는 Rectangle 구조체를 선언합니다. Rectangle 구조체는 width와 height 필드를 가지고 있습니다.
Rectangle 구조체는 area()와 perimeter() 메서드를 구현하고 있습니다. Rectangle 구조체는 Shape 인터페이스를 구현하게 됩니다.
func printShape(s Shape) {
fmt.Printf("Area = %0.2f Perimeter = %0.2f\\n", s.area(), s.perimeter())
}
func main() {
r := Rectangle{width: 10, height: 5}
printShape(r)
}위의 예제에서는 printShape() 함수를 선언합니다. printShape() 함수는 Shape 인터페이스를 받아서 area()와 perimeter() 메서드를 호출하고 출력합니다.
main() 함수에서는 Rectangle 구조체를 선언하고 printShape() 함수를 호출합니다. 출력 결과는 다음과 같습니다.
Area = 50.00 Perimeter = 30.00위의 예제에서는 Rectangle 구조체가 Shape 인터페이스를 구현하고 있으므로 printShape() 함수에서 Rectangle 구조체를 인자로 전달할 수 있습니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.