본문으로 건너뛰기

Go 변수와 데이터 타입

1. 변수(Variables)

Go에서 변수를 선언하는 방법으로는 기본 변수선언인 var 키워드를 사용해 변수를 정의할 수 있습니다.

var 변수이름 데이터 타입
var name string = "King"

함수 내에서 :=를 사용해 변수를 선언하고 초기화 합니다.

name := "James"

2. 데이터 타입(Data Types)

Go 에서는 여러 기본 데이터 타입을 제공합니다.

  • 정수형(integer)
    • int, int8, int16, int32, int64
    • uint, uint8, uint16, uint32, uint64
  • 부동 소수점(Floating-point)
    • float32, float64
  • 복소수형(Complex)
    • complex64, complex128
  • 문자열(String)
    • 문자열은 불변(immutable) 이며, UTF-8 인코딩 지원
    var greeting string = "Hello World"
  • 불리언(Boolean)
    • bool 타입으로, true 또는 false값을 가짐
    var isActive bool = true
  • 슬라이스(Slice)
    • 동적 길이의 배열
    var number []int = []int{1,2,3}
  • 맵(Map)
    • 키-값 쌍으로 구성된 데이터 구조
    var args map[string]int = map[string]int{"Sally": 25, "Bob": 30}
  • 구조체(Struct)
    • 사용자 정의 데이터 타입으로, 여러 필드를 가질 수 있음
    type Person struct {
    Name string
    Age int
    Job string
    }
  • 인터페이스(Interface)
    • 메서드의 집합을 정의, 다양한 타입을 구현합
     type Animal interface {
    Speak() string
    }

전체 코드

package main

import "fmt"

func main() {
// string
var gretting string = "Hello, Go!, from a variable";
fmt.Println(gretting); // Hello, Go!, from a variable

// int
var isActive bool = true;
fmt.Println(isActive); // true

// slice
var numer []int = []int{1, 2, 3, 4, 5};
fmt.Println(numer); // [1 2 3 4 5]

// map
var user map[string]string = map[string]string{
"name": "John",
"age": "30",
}
fmt.Println(user); // map[age:30 name:John]

// struct
type Person struct {
name string
Age int
Job string
}

var person Person = Person {
name: "John",
Age: 30,
Job: "Developer",
}
fmt.Println(person); // {John 30 Developer}
}

3. 타입 추론(Type Interface)

Go는 변수 선언 시 타입을 명시하지 않더라도 초기화에 따라 타입이 자동 추론됩니다.

package main

import "fmt"

func main() {
var age = 27; // int 추론
name := "John"; // string 추론

fmt.Println("Name:", name);
fmt.Println("Age:", age)
}

4. 명시적 타입 지정 (Explicit Type Specification)

변수를 선언할 때 타입을 명시적으로 지정할 수 있으며, 이는 코드의 가독성을 높이고, 의도를 명확히할 수 있습니다.

package main

import "fmt"

func main() {
var height float64 = 1.82
var isActivate bool = true

fmt.Println("Height:", height)
fmt.Println("IsActivate:", isActivate)
}