Solod: Go可以成为更好的C

编程语言 Go C 编译器

是什么

Solod(发音"so")是一个严格的Go子集,翻译成C11代码。没有隐藏的内存分配,源码级互操作。

核心理念: 用Go的语法和类型安全,写出C的性能。

核心特性

支持的特性

支持不支持
struct, 方法, 接口 channel
slice, map, 数组 goroutine
多返回值, defer 闭包
字符串, 错误处理 泛型

Hello World示例

Go代码:

package main

type Person struct {
    Name string
    Age int
}

func (p *Person) Sleep() int {
    p.Age += 1
    return p.Age
}

func main() {
    p := Person{Name: "Alice", Age: 30}
    p.Sleep()
    println(p.Name, "is now", p.Age, "years old.")
}

生成的C代码:

#include "main.h"

typedef struct main_Person {
    so_String Name;
    so_int Age;
} main_Person;

so_int main_Person_Sleep(void* self) {
    main_Person* p = (main_Person*)self;
    p->Age += 1;
    return p->Age;
}

int main(void) {
    main_Person p = (main_Person){
        .Name = so_str("Alice"), .Age = 30
    };
    main_Person_Sleep(&p);
    so_println("%.*s %s %" PRId64 " %s", 
        p.Name.len, p.Name.ptr, "is now", p.Age, "years old.");
}

数据类型映射

为什么重要

Solod为系统编程提供了一个中间地带——不想学C语法但需要C性能的场景。它保留了Go的优雅,同时消除了GC的不确定性。


来源: antonz.org | 探索日期: 2026-03-23