Go toml로.DecodeFile에 빠진 노트
토ML이라는 설정 파일의 미니 언어가 있는데 Go로 해봤는데 제대로 읽지 못하고 빠져서 적어놨어요.
config_test.go
package main
import (
"github.com/BurntSushi/toml"
"testing"
"fmt"
)
type ConfToml struct {
Keys SectionKeys toml:"keys"
}
type SectionKeys struct {
Consumer_key string toml:"consumer_key"
access_token string toml:"access_token"
}
// config の read
func readSettingsConfig(path string, config *ConfToml) {
_, err := toml.DecodeFile(path, config)
if err != nil {
panic(err)
}
}
func Test_readSettingsConfg(t *testing.T) {
var conftoml ConfToml
_, err := toml.DecodeFile("config.toml", &conftoml)
if err != nil {
panic(err)
}
fmt.Println(conftoml.Keys)
// Printlnする為に、あえてerrorにしている。
if conftoml.Keys.Consumer_key != "aab" {
t.Error("Not Match")
}
if conftoml.Keys.Consumer_key != "bbb" {
t.Error("Not Match")
}
}
config.toml
[keys]
consumer_key = "aaa"
access_token = "bbb"
실행 결과
{aaa }
--- FAIL: Test_readSettingsConfg (0.00s)
config_test.go:38: Not Match
config_test.go:41: Not Match
FAIL
FAIL command-line-arguments 0.005s
이 굵은 글꼴이 중점입니다. 이것은 Print가toml 파일로 읽은 구조체입니다. 단, aa라는 값만 저장된 상태입니다.원래는 {aabbbb}이였어야 했는데.
type SectionKeys struct {
Consumer_key string `toml:"consumer_key"`
access_token string `toml:"access_token"`
}
이 Sectionkesy 구조체의 필드 이름은 소문자와 대문자에 따라 다르기 때문이다.보아하니 DecodeFile의 필드 이름이 소문자라면 값을 설정하지 않을 것 같다.
※Access_토큰과 대문자로 설정하면 정확한 값이 설정됩니다.
아마,github.패키지 이외의 구조체에 접근 권한이 없기 때문이라고 생각합니다. (내보낼 수 없습니다.)
설정치가 없어서 싫다~ 싫다~ 무섭다~ 무섭다~ 빠져든다.
제가 사과했을지 모르니 많은 지도와 채찍질을 부탁드립니다.
사이트 축소판 그림
[개인 노트] 파일 형식에서 TOML을 설정하는 게 좋을 것 같아요.
Go 언어의 구조 설치 모드
Reference
이 문제에 관하여(Go toml로.DecodeFile에 빠진 노트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/maaaato/items/bdc5fe04517a42269523텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)