介绍 CUE 的 Go API 要从上下文对象 cue.Context 开始。
上下文对象可以用来编译 CUE 代码和构建 values 对象(稍后章节介绍)。
下面介绍上下文对象的基本用法,后面的章节会逐步增加复杂的场景。
当操作多个 value 的时候,他们应当来自同一个运行时。这个要求会在未来的版本中移除。
使用 Context 编译
这是一个最简单的程序,打印一个 CUE value 对象。
如果其中有错误,程序将会打印遇到的第一个错误。
context.go
packagemainimport("fmt""cuelang.org/go/cue""cuelang.org/go/cue/cuecontext")constval=`
i: int
s: "hello"
`funcmain(){var(c*cue.Contextvcue.Value)// create a contextc=cuecontext.New()// compile some CUE into a Valuev=c.CompileString(val)// print the valuefmt.Println(v)}
packagemainimport("fmt""cuelang.org/go/cue""cuelang.org/go/cue/cuecontext")typeValstruct{Iint`json:"i"`Sstring`json:"s,omitempty"`bbool}funcmain(){var(c*cue.Contextvcue.Value)val:=Val{I:1,S:"hello",b:true,}// create a contextc=cuecontext.New()// compile some CUE into a Valuev=c.Encode(val)// print the valuefmt.Println(v)// we can also encode typest:=c.EncodeType(Val{})fmt.Println(t)}