숙련된 개발자를 위한 Golang - 2부

어서 오십시오,



이것은 Golang 튜토리얼 시리즈의 두 번째 부분입니다. 첫 번째 부분을 확인하지 않았다면 확인하세요.

우리가 중단 한 곳에서 계속합시다 ...

Go의 기본 데이터 유형




통사론:



var variableName type = value


다음은 Go의 기본 데이터 유형 유형입니다.

부울


  • A bool 유형은 사전 선언된 상수 true 또는 false 로 표시되는 부울 진리값 집합을 나타냅니다.
  • 지원되는 연산자는 &&, || 그리고 !
  • %t를 사용하여 부울을 인쇄합니다.


  • 예시:



    var flag bool = !(10 > 0 && 20 < 40)
    fmt.Printf("%t\n", flag)  // false
    


    숫자


  • 숫자 유형은 정수 또는 부동 소수점 값 세트를 나타냅니다.
  • 아키텍처 종속 유형은 아키텍처에 따라 크기를 결정합니다. 아키텍처 독립 유형은 크기가 고정되어 있습니다.
  • float 유형은 없고 float32 또는 float64
  • float32의 정밀도는 소수점 이하 7자리입니다.
  • float64의 정밀도는 소수점 이하 15자리입니다.
  • 데이터 유형 간에 암시적 유형 변환이 없습니다. 즉, int16int32에 할당할 수 없으므로 이를 극복하려면 명시적 유형 변환을 수행해야 합니다.


  • 아키텍처 종속 유형:



    uint     either 32 or 64 bits
    int      same size as uint
    uintptr  an unsigned integer large enough to store the uninterpreted bits of a pointer value
    




    아키텍처 독립 유형:



    uint8       the set of all unsigned  8-bit integers (0 to 255)
    uint16      the set of all unsigned 16-bit integers (0 to 65535)
    uint32      the set of all unsigned 32-bit integers (0 to 4294967295)
    uint64      the set of all unsigned 64-bit integers (0 to 18446744073709551615)
    
    int8        the set of all signed  8-bit integers (-128 to 127)
    int16       the set of all signed 16-bit integers (-32768 to 32767)
    int32       the set of all signed 32-bit integers (-2147483648 to 2147483647)
    int64       the set of all signed 64-bit integers (-9223372036854775808 to 9223372036854775807)
    
    float32     the set of all IEEE-754 32-bit floating-point numbers
    float64     the set of all IEEE-754 64-bit floating-point numbers
    




    명시적 유형 변환:



    var val1 int16 = 32
    var val2 int32 = int32(val1)   // explicit conversion
    


    복소수


  • Go는 아키텍처에 독립적인 복소수를 저장하기 위해 두 가지 새로운 데이터 유형을 제공합니다.
  • 복소수 산술이 지원됩니다.
  • complex(real, imaginary) 함수를 사용하여 복소수 생성 & real() & imag() 함수를 사용하여 실수부 및 허수부 추출.
  • %v를 사용하여 복소수를 인쇄합니다.

  • complex64   the set of all complex numbers with float32 real and imaginary parts
    complex128  the set of all complex numbers with float64 real and imaginary parts
    




    예시:



    var cp1 = complex(1.2, 2.1)
    var cp2 = complex(3.4, 5.8)
    fmt.Println(real(cp1), imag(cp2))  // 1.2  5.8
    fmt.Printf("%v\n", cp1 + cp2)     // (4.6 + 7.9i)
    


    성격


  • 정수형의 특수한 경우입니다.
  • 유니코드
  • \u(4 hex digit) 또는 \U(8 hex digits) 사용
  • 인쇄용 사용자%c 또는 %U.

  • byte        alias for uint8, for storing ASCII characters
    rune        alias for int32, for storing UTF-8 characters
    




    예시:



    var char1 byte = 65           // ASCII 'A'
    var char2 byte = '\x41'       // ASCII 'A'
    var char3 rune = '\u0041'     // Unicode 'A'
    var char4 rune = '\U00101234' // Unicode
    fmt.Printf("%c %U\n", char1, char4)   // A U+1012334
    


    바늘


  • 포인터는 메모리 주소를 저장하는 변수입니다.
  • 이것은 포인터 산술이 Go에서 지원되지 않는다는 점을 제외하고는 C++와 정확히 유사합니다.
  • 포인터 변수는 힙에 저장되고 가비지 수집됩니다.
  • AddressOf(&) 및 dereference(*) 연산자는 C++와 동일하게 작동합니다.
  • %p를 사용하여 포인터를 인쇄합니다.


  • 통사론:



    var identifier *type = address
    




    예시:



    var num int = 6
    var ptr *int = &num
    fmt.Printf("%p\n", ptr)    // address of num
    
    *ptr = 20                  // changes num to 20
    fmt.Println(num)           // 20
    
    ptr++                      // illegal, pointer arithmetic not supported
    const val = 10
    ptr = &val                 // illegal, why?
    


    See this for why.




  • string는 Java에서 변경할 수 없는 것과 같은 이유로 Go에서 변경할 수 없습니다.
  • 문자열은 C/C++처럼 null로 끝나지 않습니다.
  • 인덱싱 및 슬라이싱이 허용됩니다.
  • 문자열 길이에 len(str)를 사용합니다.
  • 문자열 문자의 주소를 사용할 수 없습니다(&str[i]가 잘못됨).
  • 비교 연산자는 바이트를 비교합니다.
  • 문자열은 큰따옴표나 역따옴표로 초기화됩니다.
  • 기본값은 빈 문자열("")입니다.


  • 예시:



    var str string = "Let's Go"
    fmt.Println(len(str))       // 8
    var str2 string = "C:\newfolder\text.txt"
    fmt.Println(str2)     // C:
                          // ewfolder    ext.txt, bcoz escape sequence
    
    var str3 string = `C:\newfolder\text.txt`   // raw string
    fmt.Pritln(str3)     // C:\newfolder\text.txt
    
    




    연결 및 업데이트:



    var a = "Hello "
    var b = "world"
    var c = a + b      // Hello world, concatenation
    a += b          // Hello world, update but create new object bcoz immutability
    




    인덱싱:



    var str = "hello"
    fmt.Printf("%c\n", str[0]) // h
    str[0] = 'j'             // illegal
    




    슬라이싱:



    var str = "hello"
    fmt.Println(str[1:4])   // ell, index 1-3
    fmt.Println(str[:4])    // hell, index 0-3
    fmt.Println(str[1:])    // ello, index 1-end
    fmt.Println(str[:])     // hello, index 0-end
    
    fmt.Println(str[-1])    // illegal, but legal in Python
    fmt.Println(str[:-1])   // illegal, but legal in Python
    


    문자열 변환 및 함수


  • Go에는 문자열 변환 및 문자열 함수에 사용할 수 있는 두 가지 패키지가 있습니다.

  • 문자열 변환의 경우:


    import "strconv"

    예시:



    package "main"
    import "strconv"
    import "fmt"
    
    func main() {
        // string to numeric
        num, _ := strconv.Atoi("1234")
        fmt.Println(num)    // 1234 - int
        fval, _ := strconv.ParseFloat("3.46", 64)  // (str, floatSize)
        fmt.Println(fval)   // 3.46 - float64
        num2, _ := strconv.ParseInt("123", 10, 64) // (str, base, intSize)
        fmt.Println(num2)   // 123 - int64
    
        // numeric to string
        str1 := strconv.Itoa(789)
        fmt.Println(str1)    // 789 - string
        str2 := strconv.FormatFloat(3.45, 'f', -1, 32)
        fmt.Println(str2)    // 3.45 - string
        str3 := strconv.FormatInt(1234, 10)
        fmt.Println(str3)    // 1234 - string
    }
    


    문자열 함수의 경우:


    import "strings"

    유용한 기능:



    func Contains(s, substr string) bool
    func Count(s, sep string) int
    func HasPrefix(s, prefix string) bool
    func HasSuffix(s, suffix string) bool
    func Index(s, sep string) int
    func Join(a []string, sep string) string
    func LastIndex(s, sep string) int
    func Repeat(s string, count int) string
    func Replace(s, old, new string, n int) string
    func Split(s, sep string) []string
    func ToLower(s string) string
    func ToUpper(s string) string
    func Trim(s string, cutset string) string
    


    이것으로 이 튜토리얼의 두 번째 부분을 마칩니다. 다음으로 Golang에 제어 구성이 있습니다. 곧...

    좋은 웹페이지 즐겨찾기