← 모든 태그
go
포인터
포인터
Go 나 C 를 사용하다보면 포인터 라는 개념을 마주하게 된다. 어렵게 느껴질 수 있지만 이후에 zero copy 등의 개념을 이해하기 위해서는 필수적으로 이해해야 하는 요소 중에 하나이다. 오늘은 Go 를 통해 포인터 를 공부해보고 여러 최적화 기법을 공부해보자.
세가지 포인터
Go 에서 "메모리 주소" 를 다루는 축은 총 세가...
Go Interface 파헤치기
들어가며
Go를 쓰다 보면 “인터페이스가 뭔가 다른 언어와 다르게 신기하게 쓰이는 구나” 하는 순간이 종종 있다. 특히 제네릭이 없던 시절의 Go 코드를 보면 아래처럼 interface{}를 마치 만능 컨테이너처럼 쓰는 코드가 흔했다.
go
var values interface{}
values = append(values, 10)
valu...
[밑바닥 부터 구현하는 데이터베이스] 2 - LinkedList 페이징
저번 시간(wiki/doc-1763560568)에는 LinkedList 의 노드를 하나하나 파일에서 읽어오면서 삽입과 삭제를 진행했다. 노드를 하나하나 읽다보니 File I/O 가 읽는 만큼 생기게 됬고 상당히 비싼 연산으로 동작하게 됬다.
오늘은 이 LinkedList 를 일정 Block 단위로 묶어 한번에 읽어오고, 이에 대한 순회연산은 메모리 ...
[밑바닥 부터 구현하는 데이터베이스] 2 - LinkedList 로 DB 를 만들어보자
전시간에는 간단한 파일을 다루는 기본기를 통해 파일을 쓰고, Offset 부터 읽는 등을 학습했다. 이번시간에는 LinkedList 자료구조를 통해 unit32 형태의 값을 저장하고 읽어와보자
인터페이스 정의
go
type Handle struct {
File os.File
Header HeaderRecord
}
type H...
UTF-8 인코딩 깊이 이해하기: Go에서 한글이 3바이트인 이유
len("Hello, 월드") 의 출력값이 몇이 나올거라고 생각하는가? 파이썬과 같은 언어에서는 10이 나오기를 기대한다. 하지만 Go lang 에서는 14가 나온다. 그 이유는 무엇일까?
go
package main
import (
"fmt"
)
func main() {
hello := "Hello, 월드!"
...