DevTales
close
프로필 배경
프로필 로고

DevTales

  • 분류 전체보기 (30)
    • Java (4)
      • Spring Boot (0)
    • Kotlin (0)
    • Go (9)
    • Python (4)
    • Database (3)
    • Cloud (5)
    • 기타 (4)
  • 홈
  • 방명록
Go (9) - 더 생각해보기

Go (9) - 더 생각해보기

Go 는 객체지향 언어인가? 어떤 사람은 Go 언어는 객체지향 언어가 아니라고 말합니다. 그 이유는 객체지향 언어들의 특징인 상속을 지원하지 않기 때문입니다. 결론부터 말씀드리자면 Go 언어는 객체지향 언어입니다. 객체지향 언어는 상속 지원 여부보다, 말 그대로 객체 간의 상호작용을 중심으로 한 프로그래밍에 있습니다. Go 언어는 상속을 지원하는 다른 언어보다 발전한 형태의 객체지향 언어입니다. 그 이유는 상속이 객체지향 설계를 깰 수 있는 많은 문제점을 갖고 있는데, 이를 지원하지 않아 문제를 미연에 방지했기 때문입니다. 상속 상속(inheritance)이란 기존 객체를 확장하여 새로운 객체를 정의하는 기능을 말합니다. 프로그래밍을 할 때 공통으로 포함되는 기능을 여러 객체가 공유해야 하는 경우가 발생..

  • format_list_bulleted Go
  • · 2025. 4. 25.
  • textsms
Go (8) - Go 문법 추가 내용

Go (8) - Go 문법 추가 내용

배열과 슬라이스 슬라이스는 Go 언어에서 주로 동적 배열 용도로 많이 사용됩니다. 즉, 크기가 계속 늘어날 때 슬라이스를 사용합니다. 하지만 슬라이스 본래 정의는 배열 일부분을 가리키는 타입으로 배열 포인터라고 볼 수 있습니다. 그래서 슬라이스는 항상 다른 배열의 일부분을 가리키고 있다는 점을 명심해야 합니다.type SliceHeader struct { Data uintptr Len int Cap int} 슬라이스의 구조체는 위와 같은 필드를 갖고 있습니다.var array [10]intvar slice []int = array[1:3] // [1, 2, 3]var slice []int = array[1:3:5] // [1, 2, 3] + 1자리 => Cap(4) 슬라이싱의 첫 번째..

  • format_list_bulleted Go
  • · 2025. 4. 25.
  • textsms
Go (7) - 테스트와 벤치마크, 웹 서버

Go (7) - 테스트와 벤치마크, 웹 서버

테스트와 벤치마크 Go 언어는 테스트 코드 작성과 실행을 언어 자체에서 지원합니다. 빠르고 손쉽게 테스트 코드를 작성할 수 있어 버그를 사전에 막는 데 효과적입니다. 다음의 3가지 표현 규약을 따라 테스트 코드를 작성해야 합니다.파일명이 _test.go 로 끝나야 합니다.testing 패키지를 import해야 합니다.테스트 코드는 func TestXxxx(t *testing.T) 형태여야 합니다.다음은 테스트 코드 예시입니다.// sample.gopackage mainimport "fmt"func squre(x int) int { return x * x}func main() { fmt.Printf(square(9)}// sample_test.gopackage mainimport "testing..

  • format_list_bulleted Go
  • · 2025. 4. 17.
  • textsms
Go (6) - 고루틴과 동시성 프로그래밍, 채널과 컨텍스트, Generic

Go (6) - 고루틴과 동시성 프로그래밍, 채널과 컨텍스트, Generic

고루틴과 동시성 프로그래밍 고루틴(goroutine)은 Go 언어에서 관리하는 경량 스레드로 함수나 명령을 동시에 실행할 때 사용합니다. 프로그램 시작점인 main() 함수 역시 고루틴에 의해서 실행됩니다. 한 번에 한 프로세스만 동작시키는 것을 싱글태스킹, 여럿을 동작시키는 것을 멀티태스킹이라고 합니다. 프로세스는 메모리 공간에 로딩되어 동작하는 프로그램을 말하는데, 프로세스는 스레드를 한 개 이상 갖고 있습니다. 스레드가 하나면 싱글 스레드 프로세스, 여럿이면 멀티 스레스 프로세스라 합니다. 스레드는 프로세스 안의 세부 작업 단위입니다. CPU 코어는 한 번에 하나의 명령어 다발 즉 하나의 스레드를 수행할 수 있는데, 이러한 CPU 코어가 스레드를 빠르게 전환해가면서 수행하면 사용자 입장에서는 마치 ..

  • format_list_bulleted Go
  • · 2025. 4. 17.
  • textsms
Go (5) - 함수 고급, 자료구조, 에러 핸들링

Go (5) - 함수 고급, 자료구조, 에러 핸들링

함수 고급 가변 인수 함수 fmt 패키지의 Println() 함수와 같이 인수의 개수가 정해져 있지 않은 함수를 가변 인수 함수라고 합니다.인수 타입 앞에 ...를 붙여서 해당 타입 인수를 여러 개 받는 가변 인수임을 표시하면 됩니다.package mainfunc sum(nums ...int) int { //}func Print(args ...interface{}) string { //}여러 타입의 인수를 가변 인수로 받으려면 모든 타입이 구현하고 있는 빈 인터페이스를 사용하면 됩니다. defer 지연 실행 때론 함수가 종료되기 직전에 실행돼야 하는 코드가 있을 수 있습니다. 대표적으로 파일이나 소켓 핸들처럼 OS 내부 자원을 사용하는 경우입니다. 파일을 생성하거나 읽을 때 OS에 파일 앤들..

  • format_list_bulleted Go
  • · 2025. 4. 13.
  • textsms
Go (4) - 슬라이스, 메서드, 인터페이스

Go (4) - 슬라이스, 메서드, 인터페이스

슬라이스 일반적인 배열은 처음 배열을 만들 때 정한 길이에서 더 이상 늘어나지 않는 문제가 있습니다.var arr [10]int 만약 처음 지정한 개수보다 더 많은 값을 저장하려면 더 큰 배열을 만들어서 값을 하나씩 복사해야 합니다. 이러한 문제점은 슬라이스를 사용하면 해결할 수 있습니다.var slice []int 슬라이스는 배열과 비슷하지만 [] 안에 배열의 개수를 적지 않고 선언합니다.슬라이스를 초기화하지 않으면 길이가 0인 슬라이스가 만들어집니다. 슬라이스 초기화 1. {} 로 초기화var slice1 = []int{1, 2, 3}var slice2 = []int{1, 5:2, 10:3} slice1의 경우 1, 2, 3을 값으로 갖는 슬라이스가 됩니다.slice2의 경우 첫 번째 요소는 1, 인..

  • format_list_bulleted Go
  • · 2025. 4. 13.
  • textsms
  • navigate_before
  • 1
  • 2
  • navigate_next
전체 카테고리
  • 분류 전체보기 (30)
    • Java (4)
      • Spring Boot (0)
    • Kotlin (0)
    • Go (9)
    • Python (4)
    • Database (3)
    • Cloud (5)
    • 기타 (4)
최근 글
인기 글
최근 댓글
태그
  • #kernel
  • #점프 투 파이썬
  • #Callback
  • #비동기
  • #논블로킹
  • #PostgreSQL
  • #java
  • #mysql
  • #system call
  • #tucker의 go언어 프로그래밍
전체 방문자
오늘
어제
전체
Copyright © Kakao Corp. All rights reserved.
Designed by 티스토리

티스토리툴바