一段长代码
Lutpul 一段长代码

一段长代码

Oct 9, 2026 at 10:30:00 PM

代码块在自己的黑框里,行太长时折行而不是把窗口撑破。

package main

import (
	"context"
	"errors"
	"fmt"
	"log/slog"
	"net/http"
	"os"
	"os/signal"
	"syscall"
	"time"
)

// 一个最小的 HTTP 服务:请求进来打一行日志,收到信号就体面退出。
func main() {
	logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelInfo}))
	mux := http.NewServeMux()
	mux.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
		// 这一行故意写得很长,用来看看超长的注释在窄窗口里是怎么折行的,而不是横向滚出去看不见结尾
		w.Header().Set("Content-Type", "text/plain; charset=utf-8")
		fmt.Fprintln(w, "ok")
	})

	srv := &http.Server{Addr: ":8080", Handler: mux, ReadHeaderTimeout: 5 * time.Second}
	go func() {
		logger.Info("listening", "addr", srv.Addr)
		if err := srv.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
			logger.Error("serve", "err", err)
			os.Exit(1)
		}
	}()

	ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
	defer stop()
	<-ctx.Done()

	shutdown, cancel := context.WithTimeout(context.Background(), 10*time.Second)
	defer cancel()
	if err := srv.Shutdown(shutdown); err != nil {
		logger.Error("shutdown", "err", err)
	}
	logger.Info("bye")
}

行内代码 os.Exit(1) 也跟着正文的字号走。

TagsCodeGo
LutpulOct 9, 2026 at 10:30:00 PM

Built with Hugo.
Last built 2026-10-19 22:56:22 · b5e6835