상세 컨텐츠

본문 제목

Go 언어에서 변수

Go lang

by techbard 2022. 3. 14. 18:58

본문

반응형
  1. 변수 이름 대소문자 구별
  2. Pascal, camelCase 이름 표기 권장
  3. Pascal - 모든 단어의 앞자가 대문자
  4. camelCase - 앞단어를 제외한 첫자를 대문자
  5. 소문자로 시작하면 패키지 레벨 범위, 대문자로 시작하면 패키지 넘어 범위
  6. 패키지 레벨 이상의 범위를 가지거나 오래 살아 남는 변수명은 관례상 길게 작성한다.
  7. 약자는 모두 대문자로 작성한다. eg. theURL, theHTTP, theHttpRequest
package main

import (
	"fmt"
)

// package level variable declaration
var i int = 0
var I int = 9

func main() {
	fmt.Println(i)
	var i int = 1
	fmt.Println(i)
	fmt.Println(I)
	fmt.Println("==========")

	// variable type conversion
	i = 42
	fmt.Printf("%v, %T\n", i, i)

	var j float64
	j = float64(i)
	fmt.Printf("%v, %T\n", j, j)
}

// 결과
//
// 0
// 1
// 9
// ==========
// 42, int
// 42, float64

  • Go 언어에서는 선언 직후 자동 초기화
package main

import (
	"fmt"
)

func main() {
	// Go 에서는 선언 이후 자동으로 zero로 초기화
	// 불리언 타입의 zero는 false
	var b bool
	fmt.Printf("%v, %T\n", b, b)
}

// 결과
//
// false, bool

  • string is immutable
package main

import (
	"fmt"
)

func main() {

	// string is immutable
	s := "I am a string"
	fmt.Printf("%v, %T\n", s, s)

	// error
	// s[2] = "u"

}

// 결과
//
// I am a string, string

  • byte slice (웹 서버 응답 등에 자주 사용)
package main

import (
	"fmt"
)

func main() {
	// byte slice
	strs := "I am a string"
	sb := []byte(strs)
	fmt.Printf("%v, %T\n", sb, sb)
}

// 결과
//
// [73 32 97 109 32 97 32 115 116 114 105 110 103], []uint8

  • rune type
package main

import (
	"fmt"
)

func main() {
	// rune type
	r := 'a' // UTF-32
	str := "s"
	fmt.Printf("%v, %T\n", r, r)
	fmt.Printf("%v, %T\n", str, str)
}

// 결과
//
// 97, int32
// s, string

  • 상수
package main

import (
	"fmt"
)

func main() {
	const myConst int = 1
	const yourConst float64 = math.Pi

	fmt.Printf("%v, %T\n", myConst, myConst)
	fmt.Printf("%v, %T\n", yourConst, yourConst)
}

// 결과
//
// 1, int
// 3.141592653589793, float64

package main

import (
	"fmt"
)

// package level enumerated constant
const (
	a = iota
	b
	c
	d
)

func main() {
	fmt.Printf("%v\n", a)
	fmt.Printf("%v\n", b)
	fmt.Printf("%v\n", c)
	fmt.Printf("%v\n", d)
}

// 결과
//
// 0
// 1
// 2
// 3

  • iota
// Test70
package main

import (
	"fmt"
)

const (
	SCV = iota
	Marine
	Firebat
	Medic
	Ghost
	Vulture
	SiegeTank
	Goliath
)

func main() {
	var thisUnit int = Marine
	fmt.Printf("%v\n", thisUnit == Marine)
}

// 결과
//
// true

  • There are multiple ways to assign or declare variables
package main

import (
	"fmt"
)

func main() {
	/* There are multiple ways to assign or declare variables */

	// one way - declare, then assign (two steps)
	var firstNumber int
	firstNumber = 2

	// another way, declare type and name and assign value
	var secondNumber int = 5

	// one step variable: declare name, assign value, and let Go figure out the type
	subtraction := 7

	fmt.Println("Hello World!")
}
반응형

관련글 더보기

댓글 영역